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

Unified Diff: gfx/gtk_preserve_window.cc

Issue 5275009: Defer window destruction until GPU finished drawing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Now with reference counting. Created 10 years, 1 month 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 | « gfx/gtk_native_view_id_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gfx/gtk_preserve_window.cc
diff --git a/gfx/gtk_preserve_window.cc b/gfx/gtk_preserve_window.cc
index c49bd31531880e1f1e13a1309701bb32c182c442..20215d1b977d69eb243cdb81ad3e38e606c5418a 100644
--- a/gfx/gtk_preserve_window.cc
+++ b/gfx/gtk_preserve_window.cc
@@ -61,10 +61,13 @@ GtkWidget* gtk_preserve_window_new() {
static void gtk_preserve_window_destroy(GtkObject* object) {
GtkWidget* widget = reinterpret_cast<GtkWidget*>(object);
+ GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget);
if (widget->window) {
gdk_window_set_user_data(widget->window, NULL);
- gdk_window_destroy(widget->window);
+ // If the window is preserved, someone else must destroy it.
+ if (!priv->preserve_window)
+ gdk_window_destroy(widget->window);
widget->window = NULL;
}
@@ -167,6 +170,9 @@ void gtk_preserve_window_set_preserve(GtkPreserveWindow* window,
attributes_mask = GDK_WA_VISUAL | GDK_WA_COLORMAP;
widget->window = gdk_window_new(
gdk_get_default_root_window(), &attributes, attributes_mask);
+ } else if (!value && widget->window && !GTK_WIDGET_REALIZED(widget)) {
+ gdk_window_destroy(widget->window);
+ widget->window = NULL;
}
}
« no previous file with comments | « gfx/gtk_native_view_id_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698