| Index: content/browser/renderer_host/display_link_mac.cc
|
| diff --git a/content/browser/renderer_host/display_link_mac.cc b/content/browser/renderer_host/display_link_mac.cc
|
| index b7239c0899bbb47d6a2e04516585a91dcf4a5a02..8d26a6d1e9d3b1a48f54c7a358a5bb3866c5839d 100644
|
| --- a/content/browser/renderer_host/display_link_mac.cc
|
| +++ b/content/browser/renderer_host/display_link_mac.cc
|
| @@ -7,23 +7,36 @@
|
| #include "base/debug/trace_event.h"
|
| #include "base/logging.h"
|
|
|
| +namespace base {
|
| +
|
| +template<>
|
| +struct ScopedTypeRefTraits<CVDisplayLinkRef> {
|
| + static void Retain(CVDisplayLinkRef object) {
|
| + CVDisplayLinkRetain(object);
|
| + }
|
| + static void Release(CVDisplayLinkRef object) {
|
| + CVDisplayLinkRelease(object);
|
| + }
|
| +};
|
| +
|
| +} // namespace base
|
| +
|
| namespace content {
|
|
|
| // static
|
| scoped_refptr<DisplayLinkMac> DisplayLinkMac::Create() {
|
| CVReturn ret = kCVReturnSuccess;
|
|
|
| - scoped_refptr<DisplayLinkMac> display_link_mac;
|
| - {
|
| - CVDisplayLinkRef display_link = NULL;
|
| - ret = CVDisplayLinkCreateWithActiveCGDisplays(&display_link);
|
| - if (ret != kCVReturnSuccess) {
|
| - LOG(ERROR) << "CVDisplayLinkCreateWithActiveCGDisplays failed: " << ret;
|
| - return NULL;
|
| - }
|
| - display_link_mac = new DisplayLinkMac(display_link);
|
| + base::ScopedTypeRef<CVDisplayLinkRef> display_link;
|
| + ret = CVDisplayLinkCreateWithActiveCGDisplays(display_link.InitializeInto());
|
| + if (ret != kCVReturnSuccess) {
|
| + LOG(ERROR) << "CVDisplayLinkCreateWithActiveCGDisplays failed: " << ret;
|
| + return NULL;
|
| }
|
|
|
| + scoped_refptr<DisplayLinkMac> display_link_mac;
|
| + display_link_mac = new DisplayLinkMac(display_link);
|
| +
|
| ret = CVDisplayLinkSetOutputCallback(
|
| display_link_mac->display_link_,
|
| &DisplayLinkCallback,
|
| @@ -36,18 +49,18 @@ scoped_refptr<DisplayLinkMac> DisplayLinkMac::Create() {
|
| return display_link_mac;
|
| }
|
|
|
| -DisplayLinkMac::DisplayLinkMac(CVDisplayLinkRef display_link)
|
| - : display_link_(display_link),
|
| - stop_timer_(
|
| - FROM_HERE, base::TimeDelta::FromSeconds(1),
|
| - this, &DisplayLinkMac::StopDisplayLink),
|
| - timebase_and_interval_valid_(false) {
|
| +DisplayLinkMac::DisplayLinkMac(
|
| + base::ScopedTypeRef<CVDisplayLinkRef> display_link)
|
| + : display_link_(display_link),
|
| + stop_timer_(
|
| + FROM_HERE, base::TimeDelta::FromSeconds(1),
|
| + this, &DisplayLinkMac::StopDisplayLink),
|
| + timebase_and_interval_valid_(false) {
|
| }
|
|
|
| DisplayLinkMac::~DisplayLinkMac() {
|
| if (CVDisplayLinkIsRunning(display_link_))
|
| CVDisplayLinkStop(display_link_);
|
| - CVDisplayLinkRelease(display_link_);
|
| }
|
|
|
| bool DisplayLinkMac::GetVSyncParameters(
|
|
|