| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/host/capturer.h" | 5 #include "remoting/host/capturer.h" |
| 6 | 6 |
| 7 #include <ApplicationServices/ApplicationServices.h> | 7 #include <ApplicationServices/ApplicationServices.h> |
| 8 #include <dlfcn.h> | 8 #include <dlfcn.h> |
| 9 #include <IOKit/pwr_mgt/IOPMLib.h> | 9 #include <IOKit/pwr_mgt/IOPMLib.h> |
| 10 #include <OpenGL/CGLMacro.h> | 10 #include <OpenGL/CGLMacro.h> |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 | 151 |
| 152 // A class to perform capturing for mac. | 152 // A class to perform capturing for mac. |
| 153 class CapturerMac : public Capturer { | 153 class CapturerMac : public Capturer { |
| 154 public: | 154 public: |
| 155 CapturerMac(); | 155 CapturerMac(); |
| 156 virtual ~CapturerMac(); | 156 virtual ~CapturerMac(); |
| 157 | 157 |
| 158 bool Init(); | 158 bool Init(); |
| 159 | 159 |
| 160 // Capturer interface. | 160 // Capturer interface. |
| 161 virtual void Start() OVERRIDE; | 161 virtual void Start(const CursorShapeChangedCallback& callback) OVERRIDE; |
| 162 virtual void Stop() OVERRIDE; | 162 virtual void Stop() OVERRIDE; |
| 163 virtual void ScreenConfigurationChanged() OVERRIDE; | 163 virtual void ScreenConfigurationChanged() OVERRIDE; |
| 164 virtual media::VideoFrame::Format pixel_format() const OVERRIDE; | 164 virtual media::VideoFrame::Format pixel_format() const OVERRIDE; |
| 165 virtual void ClearInvalidRegion() OVERRIDE; | 165 virtual void ClearInvalidRegion() OVERRIDE; |
| 166 virtual void InvalidateRegion(const SkRegion& invalid_region) OVERRIDE; | 166 virtual void InvalidateRegion(const SkRegion& invalid_region) OVERRIDE; |
| 167 virtual void InvalidateScreen(const SkISize& size) OVERRIDE; | 167 virtual void InvalidateScreen(const SkISize& size) OVERRIDE; |
| 168 virtual void InvalidateFullScreen() OVERRIDE; | 168 virtual void InvalidateFullScreen() OVERRIDE; |
| 169 virtual void CaptureInvalidRegion( | 169 virtual void CaptureInvalidRegion( |
| 170 const CaptureCompletedCallback& callback) OVERRIDE; | 170 const CaptureCompletedCallback& callback) OVERRIDE; |
| 171 virtual const SkISize& size_most_recent() const OVERRIDE; | 171 virtual const SkISize& size_most_recent() const OVERRIDE; |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 cgl_context_ = NULL; | 299 cgl_context_ = NULL; |
| 300 } | 300 } |
| 301 // The buffers might be in use by the encoder, so don't delete them here. | 301 // The buffers might be in use by the encoder, so don't delete them here. |
| 302 // Instead, mark them as "needs update"; next time the buffers are used by | 302 // Instead, mark them as "needs update"; next time the buffers are used by |
| 303 // the capturer, they will be recreated if necessary. | 303 // the capturer, they will be recreated if necessary. |
| 304 for (int i = 0; i < kNumBuffers; ++i) { | 304 for (int i = 0; i < kNumBuffers; ++i) { |
| 305 buffers_[i].set_needs_update(); | 305 buffers_[i].set_needs_update(); |
| 306 } | 306 } |
| 307 } | 307 } |
| 308 | 308 |
| 309 void CapturerMac::Start() { | 309 void CapturerMac::Start( |
| 310 const CursorShapeChangedCallback& callback) { |
| 311 cursor_shape_changed_callback_ = callback; |
| 312 |
| 310 // Create power management assertions to wake the display and prevent it from | 313 // Create power management assertions to wake the display and prevent it from |
| 311 // going to sleep on user idle. | 314 // going to sleep on user idle. |
| 312 IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, | 315 IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, |
| 313 kIOPMAssertionLevelOn, | 316 kIOPMAssertionLevelOn, |
| 314 &power_assertion_id_display_); | 317 &power_assertion_id_display_); |
| 315 IOPMAssertionCreate(CFSTR("UserIsActive"), | 318 IOPMAssertionCreate(CFSTR("UserIsActive"), |
| 316 kIOPMAssertionLevelOn, | 319 kIOPMAssertionLevelOn, |
| 317 &power_assertion_id_user_); | 320 &power_assertion_id_user_); |
| 318 } | 321 } |
| 319 | 322 |
| 320 void CapturerMac::Stop() { | 323 void CapturerMac::Stop() { |
| 321 if (power_assertion_id_display_ != kIOPMNullAssertionID) { | 324 if (power_assertion_id_display_ != kIOPMNullAssertionID) { |
| 322 IOPMAssertionRelease(power_assertion_id_display_); | 325 IOPMAssertionRelease(power_assertion_id_display_); |
| 323 power_assertion_id_display_ = kIOPMNullAssertionID; | 326 power_assertion_id_display_ = kIOPMNullAssertionID; |
| 324 } | 327 } |
| 325 if (power_assertion_id_user_ != kIOPMNullAssertionID) { | 328 if (power_assertion_id_user_ != kIOPMNullAssertionID) { |
| 326 IOPMAssertionRelease(power_assertion_id_user_); | 329 IOPMAssertionRelease(power_assertion_id_user_); |
| 327 power_assertion_id_user_ = kIOPMNullAssertionID; | 330 power_assertion_id_user_ = kIOPMNullAssertionID; |
| 328 } | 331 } |
| 329 } | 332 } |
| 330 | 333 |
| 334 void CapturerMac::SetCursorShapeChangedCallback( |
| 335 const CursorShapeChangedCallback& callback) { |
| 336 // TODO(garykac) Implement cursor shape for Mac. (crbug.com/116299) |
| 337 } |
| 338 |
| 331 void CapturerMac::ScreenConfigurationChanged() { | 339 void CapturerMac::ScreenConfigurationChanged() { |
| 332 ReleaseBuffers(); | 340 ReleaseBuffers(); |
| 333 helper_.ClearInvalidRegion(); | 341 helper_.ClearInvalidRegion(); |
| 334 last_buffer_ = NULL; | 342 last_buffer_ = NULL; |
| 335 | 343 |
| 336 CGDirectDisplayID mainDevice = CGMainDisplayID(); | 344 CGDirectDisplayID mainDevice = CGMainDisplayID(); |
| 337 int width = CGDisplayPixelsWide(mainDevice); | 345 int width = CGDisplayPixelsWide(mainDevice); |
| 338 int height = CGDisplayPixelsHigh(mainDevice); | 346 int height = CGDisplayPixelsHigh(mainDevice); |
| 339 InvalidateScreen(SkISize::Make(width, height)); | 347 InvalidateScreen(SkISize::Make(width, height)); |
| 340 | 348 |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 Capturer* Capturer::Create() { | 675 Capturer* Capturer::Create() { |
| 668 CapturerMac* capturer = new CapturerMac(); | 676 CapturerMac* capturer = new CapturerMac(); |
| 669 if (!capturer->Init()) { | 677 if (!capturer->Init()) { |
| 670 delete capturer; | 678 delete capturer; |
| 671 capturer = NULL; | 679 capturer = NULL; |
| 672 } | 680 } |
| 673 return capturer; | 681 return capturer; |
| 674 } | 682 } |
| 675 | 683 |
| 676 } // namespace remoting | 684 } // namespace remoting |
| OLD | NEW |