diff options
Diffstat (limited to 'remoting/host/capturer_mac.h')
-rw-r--r-- | remoting/host/capturer_mac.h | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/remoting/host/capturer_mac.h b/remoting/host/capturer_mac.h index 442098d..ee42882 100644 --- a/remoting/host/capturer_mac.h +++ b/remoting/host/capturer_mac.h @@ -6,6 +6,7 @@ #define REMOTING_HOST_CAPTURER_MAC_H_ #include "remoting/host/capturer.h" +#include "remoting/host/capturer_helper.h" #include <ApplicationServices/ApplicationServices.h> #include <OpenGL/OpenGL.h> #include "base/memory/scoped_ptr.h" @@ -15,15 +16,22 @@ namespace remoting { // A class to perform capturing for mac. class CapturerMac : public Capturer { public: - explicit CapturerMac(MessageLoop* message_loop); + CapturerMac(); virtual ~CapturerMac(); + // Capturer interface. virtual void ScreenConfigurationChanged(); + virtual media::VideoFrame::Format pixel_format() const; + virtual void ClearInvalidRects(); + virtual void InvalidateRects(const InvalidRects& inval_rects); + virtual void InvalidateScreen(const gfx::Size& size); + virtual void InvalidateFullScreen(); + virtual void CaptureInvalidRects(CaptureCompletedCallback* callback); + virtual const gfx::Size& size_most_recent() const; private: - virtual void CalculateInvalidRects(); - virtual void CaptureRects(const InvalidRects& rects, - CaptureCompletedCallback* callback); + void CaptureRects(const InvalidRects& rects, + CaptureCompletedCallback* callback); void ScreenRefresh(CGRectCount count, const CGRect *rect_array); void ScreenUpdateMove(CGScreenUpdateMoveDelta delta, @@ -42,15 +50,26 @@ class CapturerMac : public Capturer { void ReleaseBuffers(); CGLContextObj cgl_context_; + static const int kNumBuffers = 2; scoped_array<uint8> buffers_[kNumBuffers]; scoped_array<uint8> flip_buffer_; + // A thread-safe list of invalid rectangles, and the size of the most + // recently captured screen. + CapturerHelper helper_; + // Screen size. int width_; int height_; int bytes_per_row_; + // The current buffer with valid data for reading. + int current_buffer_; + + // Format of pixels returned in buffer. + media::VideoFrame::Format pixel_format_; + DISALLOW_COPY_AND_ASSIGN(CapturerMac); }; |