diff options
Diffstat (limited to 'mozilla-1225044.patch')
-rw-r--r-- | mozilla-1225044.patch | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/mozilla-1225044.patch b/mozilla-1225044.patch deleted file mode 100644 index 19b6d90..0000000 --- a/mozilla-1225044.patch +++ /dev/null @@ -1,125 +0,0 @@ -diff -up firefox-48.0/widget/gtk/nsWindow.cpp.1225044 firefox-48.0/widget/gtk/nsWindow.cpp ---- firefox-48.0/widget/gtk/nsWindow.cpp.1225044 2016-08-17 11:49:31.675792661 +0200 -+++ firefox-48.0/widget/gtk/nsWindow.cpp 2016-08-17 11:51:49.773545394 +0200 -@@ -216,6 +216,9 @@ static gboolean window_state_event_cb - static void theme_changed_cb (GtkSettings *settings, - GParamSpec *pspec, - nsWindow *data); -+static void check_resize_cb (GtkContainer* container, -+ gpointer user_data); -+ - #if (MOZ_WIDGET_GTK == 3) - static void scale_changed_cb (GtkWidget* widget, - GParamSpec* aPSpec, -@@ -472,6 +475,8 @@ nsWindow::nsWindow() - #if GTK_CHECK_VERSION(3,4,0) - mLastScrollEventTime = GDK_CURRENT_TIME; - #endif -+ -+ mPendingConfigures = 0; - } - - nsWindow::~nsWindow() -@@ -2413,6 +2418,8 @@ nsWindow::OnConfigureEvent(GtkWidget *aW - LOG(("configure event [%p] %d %d %d %d\n", (void *)this, - aEvent->x, aEvent->y, aEvent->width, aEvent->height)); - -+ mPendingConfigures--; -+ - LayoutDeviceIntRect screenBounds; - GetScreenBounds(screenBounds); - -@@ -3403,6 +3410,12 @@ nsWindow::OnDPIChanged() - } - - void -+nsWindow::OnCheckResize() -+{ -+ mPendingConfigures++; -+} -+ -+void - nsWindow::DispatchDragEvent(EventMessage aMsg, const LayoutDeviceIntPoint& aRefPoint, - guint aTime) - { -@@ -3858,6 +3871,8 @@ nsWindow::Create(nsIWidget* aParent, - G_CALLBACK(delete_event_cb), nullptr); - g_signal_connect(mShell, "window_state_event", - G_CALLBACK(window_state_event_cb), nullptr); -+ g_signal_connect(mShell, "check-resize", -+ G_CALLBACK(check_resize_cb), nullptr); - - GtkSettings* default_settings = gtk_settings_get_default(); - g_signal_connect_after(default_settings, -@@ -4177,7 +4192,31 @@ nsWindow::NativeShow(bool aAction) - } - else { - if (mIsTopLevel) { -- gtk_widget_hide(GTK_WIDGET(mShell)); -+ // Workaround window freezes on GTK versions before 3.21.2 by -+ // ensuring that configure events get dispatched to windows before -+ // they are unmapped. See bug 1225044. -+ if (gtk_check_version(3, 21, 2) != nullptr && mPendingConfigures > 0) { -+ GtkAllocation allocation; -+ gtk_widget_get_allocation(GTK_WIDGET(mShell), &allocation); -+ -+ GdkEventConfigure event; -+ PodZero(&event); -+ event.type = GDK_CONFIGURE; -+ event.window = mGdkWindow; -+ event.send_event = TRUE; -+ event.x = allocation.x; -+ event.y = allocation.y; -+ event.width = allocation.width; -+ event.height = allocation.height; -+ -+ auto shellClass = GTK_WIDGET_GET_CLASS(mShell); -+ for (int i = 0; i < mPendingConfigures; i++) { -+ Unused << shellClass->configure_event(mShell, &event); -+ } -+ mPendingConfigures = 0; -+ } -+ -+ gtk_widget_hide(mShell); - - ClearTransparencyBitmap(); // Release some resources - } -@@ -6028,6 +6067,16 @@ theme_changed_cb (GtkSettings *settings, - window->ThemeChanged(); - } - -+static void -+check_resize_cb (GtkContainer* container, gpointer user_data) -+{ -+ RefPtr<nsWindow> window = get_window_for_gtk_widget(GTK_WIDGET(container)); -+ if (!window) { -+ return; -+ } -+ window->OnCheckResize(); -+} -+ - #if (MOZ_WIDGET_GTK == 3) - static void - scale_changed_cb (GtkWidget* widget, GParamSpec* aPSpec, gpointer aPointer) -diff -up firefox-48.0/widget/gtk/nsWindow.h.1225044 firefox-48.0/widget/gtk/nsWindow.h ---- firefox-48.0/widget/gtk/nsWindow.h.1225044 2016-07-25 22:22:07.000000000 +0200 -+++ firefox-48.0/widget/gtk/nsWindow.h 2016-08-17 11:50:55.274248334 +0200 -@@ -254,6 +254,7 @@ public: - - void ThemeChanged(void); - void OnDPIChanged(void); -+ void OnCheckResize(void); - - #ifdef MOZ_X11 - Window mOldFocusWindow; -@@ -463,6 +464,10 @@ private: - RefPtr<nsShmImage> mBackShmImage; - #endif - -+ // Upper bound on pending ConfigureNotify events to be dispatched to the -+ // window. See bug 1225044. -+ int mPendingConfigures; -+ - #ifdef ACCESSIBILITY - RefPtr<mozilla::a11y::Accessible> mRootAccessible; - |