diff options
Diffstat (limited to 'mozilla-1535567.patch')
-rw-r--r-- | mozilla-1535567.patch | 202 |
1 files changed, 36 insertions, 166 deletions
diff --git a/mozilla-1535567.patch b/mozilla-1535567.patch index 1cbe3fd..a2b96a4 100644 --- a/mozilla-1535567.patch +++ b/mozilla-1535567.patch @@ -1,30 +1,7 @@ -diff -up firefox-66.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-66.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium -diff -up firefox-66.0/media/webrtc/trunk/Makefile.old firefox-66.0/media/webrtc/trunk/Makefile -diff -up firefox-66.0/widget/gtk/mozcontainer.cpp.old firefox-66.0/widget/gtk/mozcontainer.cpp ---- firefox-66.0/widget/gtk/mozcontainer.cpp.old 2019-03-14 23:12:56.000000000 +0100 -+++ firefox-66.0/widget/gtk/mozcontainer.cpp 2019-03-15 13:23:59.366840324 +0100 -@@ -20,6 +20,20 @@ - # include "maiRedundantObjectFactory.h" - #endif - -+#undef LOG -+#ifdef MOZ_LOGGING -+ -+# include "mozilla/Logging.h" -+# include "nsTArray.h" -+# include "Units.h" -+ -+extern mozilla::LazyLogModule gWidgetLog; -+ -+# define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args) -+#else -+# define LOG(args) -+#endif /* MOZ_LOGGING */ -+ - #ifdef MOZ_WAYLAND - using namespace mozilla; - using namespace mozilla::widget; -@@ -157,10 +171,14 @@ void moz_container_init(MozContainer *co +diff -up firefox-67.0/widget/gtk/mozcontainer.cpp.mozilla-1535567 firefox-67.0/widget/gtk/mozcontainer.cpp +--- firefox-67.0/widget/gtk/mozcontainer.cpp.mozilla-1535567 2019-05-14 01:08:37.000000000 +0200 ++++ firefox-67.0/widget/gtk/mozcontainer.cpp 2019-05-15 15:56:19.645336209 +0200 +@@ -157,6 +157,7 @@ void moz_container_init(MozContainer *co container->subsurface = nullptr; container->eglwindow = nullptr; container->frame_callback_handler = nullptr; @@ -32,52 +9,34 @@ diff -up firefox-66.0/widget/gtk/mozcontainer.cpp.old firefox-66.0/widget/gtk/mo // We can draw to x11 window any time. container->ready_to_draw = GDK_IS_X11_DISPLAY(gdk_display_get_default()); container->surface_needs_clear = true; -+ container->inital_draw_cb = nullptr; - #endif -+ -+ LOG(("moz_container_class_init() [%p]\n", (void *)container)); +@@ -165,6 +166,11 @@ void moz_container_init(MozContainer *co } #if defined(MOZ_WAYLAND) -@@ -170,36 +188,92 @@ static wl_surface *moz_container_get_gtk - dlsym(RTLD_DEFAULT, "gdk_wayland_window_get_wl_surface"); - - GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(container)); -- return sGdkWaylandWindowGetWlSurface(window); -+ wl_surface *surface = sGdkWaylandWindowGetWlSurface(window); -+ -+ LOG(("moz_container_get_gtk_container_surface() [%p] wl_surface %p ID %d\n", -+ (void *)container, (void *)surface, -+ surface ? wl_proxy_get_id((struct wl_proxy *)surface) : -1)); ++void moz_container_set_initial_draw_callback( ++ MozContainer *container, std::function<void(void)> inital_draw_cb) { ++ container->inital_draw_cb = inital_draw_cb; ++} + -+ return surface; - } - - static void frame_callback_handler(void *data, struct wl_callback *callback, + static wl_surface *moz_container_get_gtk_container_surface( + MozContainer *container) { + static auto sGdkWaylandWindowGetWlSurface = (wl_surface * (*)(GdkWindow *)) +@@ -178,37 +184,61 @@ static void frame_callback_handler(void uint32_t time) { MozContainer *container = MOZ_CONTAINER(data); -+ -+ LOG( -+ ("moz_container_frame_callback_handler() [%p] frame_callback_handler %p " -+ "ready_to_draw %d (set to true) " -+ "inital_draw callback %d\n", -+ (void *)container, (void *)container->frame_callback_handler, -+ container->ready_to_draw, container->inital_draw_cb ? 1 : 0)); -+ g_clear_pointer(&container->frame_callback_handler, wl_callback_destroy); + container->frame_callback_handler_surface_id = -1; -+ -+ if (!container->ready_to_draw && container->inital_draw_cb) { -+ container->inital_draw_cb(); -+ } + if (!container->ready_to_draw && container->inital_draw_cb) { + container->inital_draw_cb(); + } container->ready_to_draw = true; } -+void moz_container_set_initial_draw_callback( -+ MozContainer *container, std::function<void(void)> inital_draw_cb) { -+ container->inital_draw_cb = inital_draw_cb; -+} -+ +-void moz_container_set_initial_draw_callback( +- MozContainer *container, std::function<void(void)> inital_draw_cb) { +- container->inital_draw_cb = inital_draw_cb; +-} +- static const struct wl_callback_listener frame_listener = { frame_callback_handler}; @@ -99,10 +58,9 @@ diff -up firefox-66.0/widget/gtk/mozcontainer.cpp.old firefox-66.0/widget/gtk/mo + : -1; + + LOG( -+ ("moz_container_request_parent_frame_callback() [%p] " -+ "container->frame_callback_handler %p " -+ "container->frame_callback_handler_surface_id %d\n", -+ (void *)container, container->frame_callback_handler, ++ ("%s [%p] frame_callback_handler %p " ++ "frame_callback_handler_surface_id %d\n", ++ __FUNCTION__, (void *)container, container->frame_callback_handler, + container->frame_callback_handler_surface_id)); + + if (container->frame_callback_handler && @@ -123,25 +81,22 @@ diff -up firefox-66.0/widget/gtk/mozcontainer.cpp.old firefox-66.0/widget/gtk/mo container); + } else { + container->frame_callback_handler_surface_id = -1; - } ++ } +} - ++ +static gboolean moz_container_map_wayland(GtkWidget *widget, + GdkEventAny *event) { + MozContainer *container = MOZ_CONTAINER(widget); + -+ LOG(("moz_container_map_wayland() begin [%p] ready_to_draw %d\n", -+ (void *)container, container->ready_to_draw)); -+ + if (container->ready_to_draw) { + return FALSE; -+ } -+ + } + + moz_container_request_parent_frame_callback(MOZ_CONTAINER(widget)); return FALSE; } -@@ -208,9 +282,12 @@ static void moz_container_unmap_wayland( +@@ -217,6 +247,7 @@ static void moz_container_unmap_wayland( g_clear_pointer(&container->subsurface, wl_subsurface_destroy); g_clear_pointer(&container->surface, wl_surface_destroy); g_clear_pointer(&container->frame_callback_handler, wl_callback_destroy); @@ -149,23 +104,7 @@ diff -up firefox-66.0/widget/gtk/mozcontainer.cpp.old firefox-66.0/widget/gtk/mo container->surface_needs_clear = true; container->ready_to_draw = false; -+ -+ LOG(("moz_container_unmap_wayland() [%p]\n", (void *)container)); - } - - static gint moz_container_get_scale(MozContainer *container) { -@@ -227,6 +304,10 @@ static gint moz_container_get_scale(MozC - - void moz_container_scale_changed(MozContainer *container, - GtkAllocation *aAllocation) { -+ LOG(("moz_container_scale_changed() [%p] surface %p eglwindow %p\n", -+ (void *)container, (void *)container->surface, -+ (void *)container->eglwindow)); -+ - if (!container->surface) { - return; - } -@@ -320,6 +401,10 @@ void moz_container_realize(GtkWidget *wi +@@ -329,6 +360,10 @@ void moz_container_realize(GtkWidget *wi : gtk_widget_get_visual(widget); window = gdk_window_new(parent, &attributes, attributes_mask); @@ -176,91 +115,22 @@ diff -up firefox-66.0/widget/gtk/mozcontainer.cpp.old firefox-66.0/widget/gtk/mo gdk_window_set_user_data(window, widget); } else { window = parent; -@@ -336,12 +421,8 @@ void moz_container_size_allocate(GtkWidg - - g_return_if_fail(IS_MOZ_CONTAINER(widget)); - -- /* printf("moz_container_size_allocate %p %d %d %d %d\n", -- (void *)widget, -- allocation->x, -- allocation->y, -- allocation->width, -- allocation->height); */ -+ LOG(("moz_container_size_allocate() [%p] %d %d %d %d\n", (void *)widget, -+ allocation->x, allocation->y, allocation->width, allocation->height)); - - /* short circuit if you can */ - container = MOZ_CONTAINER(widget); -@@ -487,8 +568,13 @@ static void moz_container_add(GtkContain - - #ifdef MOZ_WAYLAND +@@ -498,6 +533,7 @@ static void moz_container_add(GtkContain struct wl_surface *moz_container_get_wl_surface(MozContainer *container) { -+ LOG(("moz_container_get_wl_surface() [%p] surface %p ready_to_draw %d\n", -+ (void *)container, (void *)container->surface, -+ container->ready_to_draw)); -+ if (!container->surface) { if (!container->ready_to_draw) { + moz_container_request_parent_frame_callback(container); return nullptr; } GdkDisplay *display = gtk_widget_get_display(GTK_WIDGET(container)); -@@ -526,10 +612,16 @@ struct wl_surface *moz_container_get_wl_ - WaylandDisplayRelease(waylandDisplay); - } - -+ LOG(("moz_container_get_wl_surface() [%p] created surface %p\n", -+ (void *)container, (void *)container->surface)); -+ - return container->surface; - } - - struct wl_egl_window *moz_container_get_wl_egl_window(MozContainer *container) { -+ LOG(("moz_container_get_wl_egl_window() [%p] eglwindow %p\n", -+ (void *)container, (void *)container->eglwindow)); -+ - if (!container->eglwindow) { - wl_surface *surface = moz_container_get_wl_surface(container); - if (!surface) { -@@ -543,6 +635,10 @@ struct wl_egl_window *moz_container_get_ - gdk_window_get_height(window) * scale); - wl_surface_set_buffer_scale(surface, scale); - } -+ -+ LOG(("moz_container_get_wl_egl_window() [%p] created eglwindow %p\n", -+ (void *)container, (void *)container->eglwindow)); -+ - return container->eglwindow; - } - -diff -up firefox-66.0/widget/gtk/mozcontainer.h.old firefox-66.0/widget/gtk/mozcontainer.h ---- firefox-66.0/widget/gtk/mozcontainer.h.old 2019-03-14 23:13:02.000000000 +0100 -+++ firefox-66.0/widget/gtk/mozcontainer.h 2019-03-15 13:23:59.366840324 +0100 -@@ -9,6 +9,7 @@ - #define __MOZ_CONTAINER_H__ - - #include <gtk/gtk.h> -+#include <functional> - - /* - * MozContainer -@@ -76,8 +77,10 @@ struct _MozContainer { +diff -up firefox-67.0/widget/gtk/mozcontainer.h.mozilla-1535567 firefox-67.0/widget/gtk/mozcontainer.h +--- firefox-67.0/widget/gtk/mozcontainer.h.mozilla-1535567 2019-05-14 01:08:37.000000000 +0200 ++++ firefox-67.0/widget/gtk/mozcontainer.h 2019-05-15 15:50:59.440570372 +0200 +@@ -77,6 +77,7 @@ struct _MozContainer { struct wl_subsurface *subsurface; struct wl_egl_window *eglwindow; struct wl_callback *frame_callback_handler; + int frame_callback_handler_surface_id; gboolean surface_needs_clear; gboolean ready_to_draw; -+ std::function<void(void)> inital_draw_cb; - #endif - gboolean force_default_visual; - }; -@@ -100,6 +103,8 @@ gboolean moz_container_has_wl_egl_window - gboolean moz_container_surface_needs_clear(MozContainer *container); - void moz_container_scale_changed(MozContainer *container, - GtkAllocation *aAllocation); -+void moz_container_set_initial_draw_callback( -+ MozContainer *container, std::function<void(void)> inital_draw_cb); - #endif - - #endif /* __MOZ_CONTAINER_H__ */ + std::function<void(void)> inital_draw_cb; |