| Index: remoting/host/screen_recorder.h
|
| diff --git a/remoting/host/screen_recorder.h b/remoting/host/screen_recorder.h
|
| index 3a844eb248b9af68352cea64ac5a0551641ed6ea..cbedd934dbf0c89a8c7b6898e5122428b1cb665f 100644
|
| --- a/remoting/host/screen_recorder.h
|
| +++ b/remoting/host/screen_recorder.h
|
| @@ -76,8 +76,9 @@ class ScreenRecorder : public base::RefCountedThreadSafe<ScreenRecorder> {
|
| // Start recording.
|
| void Start();
|
|
|
| - // Pause the recording session.
|
| - void Pause();
|
| + // Stop the recording session. |done_task| is executed when recording is fully
|
| + // stopped. This object cannot be used again after |task| is executed.
|
| + void Stop(Task* done_task);
|
|
|
| // Set the maximum capture rate. This is denoted by number of updates
|
| // in one second. The actual system may run in a slower rate than the maximum
|
| @@ -103,7 +104,8 @@ class ScreenRecorder : public base::RefCountedThreadSafe<ScreenRecorder> {
|
| // Capturer thread ----------------------------------------------------------
|
|
|
| void DoStart();
|
| - void DoPause();
|
| + void DoStop(Task* done_task);
|
| + void DoCompleteStop(Task* done_task);
|
|
|
| void DoSetMaxRate(double max_rate);
|
|
|
| @@ -112,7 +114,7 @@ class ScreenRecorder : public base::RefCountedThreadSafe<ScreenRecorder> {
|
|
|
| void DoCapture();
|
| void CaptureDoneCallback(scoped_refptr<CaptureData> capture_data);
|
| - void DoFinishSend();
|
| + void DoFinishOneRecording();
|
|
|
| // Network thread -----------------------------------------------------------
|
|
|
| @@ -127,16 +129,22 @@ class ScreenRecorder : public base::RefCountedThreadSafe<ScreenRecorder> {
|
| void DoRemoveClient(scoped_refptr<protocol::ConnectionToClient> connection);
|
| void DoRemoveAllClients();
|
|
|
| + // Signal network thread to cease activities.
|
| + void DoStopOnNetworkThread(Task* done_task);
|
| +
|
| // Callback for the last packet in one update. Deletes |packet| and
|
| // schedules next screen capture.
|
| - void OnFrameSent(VideoPacket* packet);
|
| + void FrameSentCallback(VideoPacket* packet);
|
|
|
| // Encoder thread -----------------------------------------------------------
|
|
|
| void DoEncode(scoped_refptr<CaptureData> capture_data);
|
|
|
| - // EncodeDataAvailableTask takes ownership of |packet|.
|
| - void EncodeDataAvailableTask(VideoPacket* packet);
|
| + // Perform stop operations on encode thread.
|
| + void DoStopOnEncodeThread(Task* done_task);
|
| +
|
| + // EncodedDataAvailableCallback takes ownership of |packet|.
|
| + void EncodedDataAvailableCallback(VideoPacket* packet);
|
| void SendVideoPacket(VideoPacket* packet);
|
|
|
| // Message loops used by this class.
|
| @@ -160,9 +168,12 @@ class ScreenRecorder : public base::RefCountedThreadSafe<ScreenRecorder> {
|
| ConnectionToClientList;
|
| ConnectionToClientList connections_;
|
|
|
| - // The following members are accessed on the capture thread.
|
| + // Flag that indicates recording has been started.
|
| bool started_;
|
|
|
| + // Flag that indicates network is being stopped.
|
| + bool network_stopped_;
|
| +
|
| // Timer that calls DoCapture.
|
| base::RepeatingTimer<ScreenRecorder> capture_timer_;
|
|
|
|
|