summaryrefslogtreecommitdiffstats
path: root/remoting/host/capturer_mac.h
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/host/capturer_mac.h')
-rw-r--r--remoting/host/capturer_mac.h27
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);
};