Chromium Code Reviews| Index: ui/accelerated_widget_mac/display_link_mac.cc |
| diff --git a/ui/accelerated_widget_mac/display_link_mac.cc b/ui/accelerated_widget_mac/display_link_mac.cc |
| index d9cc46876f9f53a8aea2e04a668421efe6f5ffd5..8c9072717672b9abf58670011f26879e3a1ab904 100644 |
| --- a/ui/accelerated_widget_mac/display_link_mac.cc |
| +++ b/ui/accelerated_widget_mac/display_link_mac.cc |
| @@ -86,6 +86,13 @@ DisplayLinkMac::DisplayLinkMac( |
| DisplayLinkMac::~DisplayLinkMac() { |
| StopDisplayLink(); |
| + // Usually |display_link_| holds the last reference to CVDisplayLinkRef, but |
| + // that's not guaranteed, so it might not free all resources after the |
| + // destructor completes. Ensure the callback is cleared out regardless. |
|
ccameron
2016/01/25 18:04:17
Maybe reference a bug # for the crashes?
tapted
2016/01/26 23:36:49
Done.
|
| + CVReturn ret = |
| + CVDisplayLinkSetOutputCallback(display_link_, nullptr, nullptr); |
| + DCHECK_EQ(kCGErrorSuccess, ret); |
| + |
| DisplayMap::iterator found = display_map_.Get().find(display_id_); |
| DCHECK(found != display_map_.Get().end()); |
| DCHECK(found->second == this); |