Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: ui/ozone/platform/dri/dri_window_delegate_proxy.cc

Issue 522463005: [Ozone-GBM] Handle GPU crashes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reland of: [Ozone-GBM] Handle GPU crashes Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/dri/dri_window_delegate_proxy.h ('k') | ui/ozone/platform/dri/dri_wrapper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/dri/dri_window_delegate_proxy.cc
diff --git a/ui/ozone/platform/dri/dri_window_delegate_proxy.cc b/ui/ozone/platform/dri/dri_window_delegate_proxy.cc
index 297bbd7fd1973fb0908c897fcce7c701af60db7a..cf2421850551f915d1f8f6ac36254d888927f8b6 100644
--- a/ui/ozone/platform/dri/dri_window_delegate_proxy.cc
+++ b/ui/ozone/platform/dri/dri_window_delegate_proxy.cc
@@ -12,18 +12,23 @@ namespace ui {
DriWindowDelegateProxy::DriWindowDelegateProxy(
gfx::AcceleratedWidget widget,
GpuPlatformSupportHostGbm* sender)
- : widget_(widget), sender_(sender) {
+ : widget_(widget), sender_(sender), has_connection_(false) {
}
DriWindowDelegateProxy::~DriWindowDelegateProxy() {
}
void DriWindowDelegateProxy::Initialize() {
- bool status = sender_->Send(new OzoneGpuMsg_CreateWindowDelegate(widget_));
- DCHECK(status);
+ TRACE_EVENT1("dri", "DriWindowDelegateProxy::Initialize", "widget", widget_);
+ sender_->AddChannelObserver(this);
}
void DriWindowDelegateProxy::Shutdown() {
+ TRACE_EVENT1("dri", "DriWindowDelegateProxy::Shutdown", "widget", widget_);
+ sender_->RemoveChannelObserver(this);
+ if (!has_connection_)
+ return;
+
bool status = sender_->Send(new OzoneGpuMsg_DestroyWindowDelegate(widget_));
DCHECK(status);
}
@@ -38,9 +43,34 @@ HardwareDisplayController* DriWindowDelegateProxy::GetController() {
}
void DriWindowDelegateProxy::OnBoundsChanged(const gfx::Rect& bounds) {
+ TRACE_EVENT2("dri",
+ "DriWindowDelegateProxy::OnBoundsChanged",
+ "widget",
+ widget_,
+ "bounds",
+ bounds.ToString());
+ bounds_ = bounds;
+ if (!has_connection_)
+ return;
+
bool status =
sender_->Send(new OzoneGpuMsg_WindowBoundsChanged(widget_, bounds));
DCHECK(status);
}
+void DriWindowDelegateProxy::OnChannelEstablished() {
+ TRACE_EVENT1(
+ "dri", "DriWindowDelegateProxy::OnChannelEstablished", "widget", widget_);
+ has_connection_ = true;
+ bool status = sender_->Send(new OzoneGpuMsg_CreateWindowDelegate(widget_));
+ DCHECK(status);
+ OnBoundsChanged(bounds_);
+}
+
+void DriWindowDelegateProxy::OnChannelDestroyed() {
+ TRACE_EVENT1(
+ "dri", "DriWindowDelegateProxy::OnChannelDestroyed", "widget", widget_);
+ has_connection_ = false;
+}
+
} // namespace ui
« no previous file with comments | « ui/ozone/platform/dri/dri_window_delegate_proxy.h ('k') | ui/ozone/platform/dri/dri_wrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698