[gnome-build-meta/jjardon/wayland_only] elements/core/gnome-desktop.bst: Apple patches to build without gdkx



commit 63b539bd4efce920dd519b2765ea1a9c4369230a
Author: Javier Jardón <jjardon gnome org>
Date:   Sun Nov 24 18:38:28 2019 +0900

    elements/core/gnome-desktop.bst: Apple patches to build without gdkx

 elements/core/gnome-desktop.bst                    |   4 +
 .../0001-crossfade-remove-gdkx-x-dependency.patch  |  66 ++++
 .../0002-gnomebg-remove-gdkx-x-dependency.patch    | 364 +++++++++++++++++++++
 3 files changed, 434 insertions(+)
---
diff --git a/elements/core/gnome-desktop.bst b/elements/core/gnome-desktop.bst
index 06e75aa0..d9b4dd10 100644
--- a/elements/core/gnome-desktop.bst
+++ b/elements/core/gnome-desktop.bst
@@ -3,6 +3,10 @@ sources:
 - kind: git_tag
   url: gitlab_gnome_org:GNOME/gnome-desktop.git
   track: master
+- kind: patch
+  path: files/gnome-desktop/0001-crossfade-remove-gdkx-x-dependency.patch
+- kind: patch
+  path: files/gnome-desktop/0002-gnomebg-remove-gdkx-x-dependency.patch
 build-depends:
 - sdk/gtk-doc.bst
 - freedesktop-sdk.bst:public-stacks/buildsystem-meson.bst
diff --git a/files/gnome-desktop/0001-crossfade-remove-gdkx-x-dependency.patch 
b/files/gnome-desktop/0001-crossfade-remove-gdkx-x-dependency.patch
new file mode 100644
index 00000000..f0668a16
--- /dev/null
+++ b/files/gnome-desktop/0001-crossfade-remove-gdkx-x-dependency.patch
@@ -0,0 +1,66 @@
+From 021f97d9be50a857f0cfa1859fc77785d2b7e1f7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= <alberts muktupavels gmail com>
+Date: Fri, 31 Oct 2014 23:09:10 +0200
+Subject: [PATCH 1/2] crossfade: remove gdkx/x dependency
+
+---
+ libgnome-desktop/gnome-bg-crossfade.c | 29 +--------------------------
+ 1 file changed, 1 insertion(+), 28 deletions(-)
+
+diff --git a/libgnome-desktop/gnome-bg-crossfade.c b/libgnome-desktop/gnome-bg-crossfade.c
+index 77098423..f254b313 100644
+--- a/libgnome-desktop/gnome-bg-crossfade.c
++++ b/libgnome-desktop/gnome-bg-crossfade.c
+@@ -27,13 +27,9 @@
+ #include <gio/gio.h>
+ 
+ #include <gdk/gdk.h>
+-#include <gdk/gdkx.h>
+-#include <X11/Xlib.h>
+-#include <X11/Xatom.h>
+ #include <gtk/gtk.h>
+ 
+ #include <cairo.h>
+-#include <cairo-xlib.h>
+ 
+ #define GNOME_DESKTOP_USE_UNSTABLE_API
+ #include "gnome-bg.h"
+@@ -365,34 +361,11 @@ animations_are_disabled (GnomeBGCrossfade *fade)
+       return !are_enabled;
+ }
+ 
+-static void
+-send_root_property_change_notification (GnomeBGCrossfade *fade)
+-{
+-        long zero_length_pixmap;
+-
+-        /* We do a zero length append to force a change notification,
+-         * without changing the value */
+-        XChangeProperty (GDK_WINDOW_XDISPLAY (fade->priv->window),
+-                         GDK_WINDOW_XID (fade->priv->window),
+-                         gdk_x11_get_xatom_by_name ("_XROOTPMAP_ID"),
+-                         XA_PIXMAP, 32, PropModeAppend,
+-                         (guchar *) &zero_length_pixmap, 0);
+-}
+-
+ static void
+ draw_background (GnomeBGCrossfade *fade)
+ {
+       if (gdk_window_get_window_type (fade->priv->window) == GDK_WINDOW_ROOT) {
+-                XClearArea (GDK_WINDOW_XDISPLAY (fade->priv->window),
+-                            GDK_WINDOW_XID (fade->priv->window),
+-                            0, 0,
+-                            gdk_window_get_width (fade->priv->window),
+-                            gdk_window_get_height (fade->priv->window),
+-                            False);
+-
+-                send_root_property_change_notification (fade);
+-
+-              gdk_flush ();
++              g_warning ("Crossfade is not supported on ROOT window!");
+       } else {
+               gdk_window_invalidate_rect (fade->priv->window, NULL, FALSE);
+               gdk_window_process_updates (fade->priv->window, FALSE);
+-- 
+2.23.0
+
diff --git a/files/gnome-desktop/0002-gnomebg-remove-gdkx-x-dependency.patch 
b/files/gnome-desktop/0002-gnomebg-remove-gdkx-x-dependency.patch
new file mode 100644
index 00000000..a1b61303
--- /dev/null
+++ b/files/gnome-desktop/0002-gnomebg-remove-gdkx-x-dependency.patch
@@ -0,0 +1,364 @@
+From 1d235bfcd335613762aeb5fb39a5f6b457cf5b43 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alberts=20Muktup=C4=81vels?= <alberts muktupavels gmail com>
+Date: Sun, 24 Nov 2019 18:19:44 +0900
+Subject: [PATCH 2/2] gnomebg: remove gdkx/x dependency
+
+---
+ libgnome-desktop/gnome-bg.c | 291 ++----------------------------------
+ 1 file changed, 9 insertions(+), 282 deletions(-)
+
+diff --git a/libgnome-desktop/gnome-bg.c b/libgnome-desktop/gnome-bg.c
+index 230a2f29..35e9c568 100644
+--- a/libgnome-desktop/gnome-bg.c
++++ b/libgnome-desktop/gnome-bg.c
+@@ -35,12 +35,7 @@ Author: Soren Sandmann <sandmann redhat com>
+ #include <glib/gstdio.h>
+ #include <gio/gio.h>
+ 
+-#include <gdk/gdkx.h>
+-#include <X11/Xlib.h>
+-#include <X11/Xatom.h>
+-
+ #include <cairo.h>
+-#include <cairo-xlib.h>
+ 
+ #define GNOME_DESKTOP_USE_UNSTABLE_API
+ #include "gnome-bg.h"
+@@ -111,10 +106,6 @@ static guint signals[N_SIGNALS] = { 0 };
+ 
+ G_DEFINE_TYPE (GnomeBG, gnome_bg, G_TYPE_OBJECT)
+ 
+-static cairo_surface_t *make_root_pixmap     (GdkScreen  *screen,
+-                                              gint        width,
+-                                              gint        height);
+-
+ /* Pixbuf utils */
+ static void       pixbuf_average_value (GdkPixbuf  *pixbuf,
+                                         GdkRGBA    *result);
+@@ -1062,6 +1053,9 @@ gnome_bg_create_surface (GnomeBG     *bg,
+       g_return_val_if_fail (bg != NULL, NULL);
+       g_return_val_if_fail (window != NULL, NULL);
+ 
++      if (root)
++              return NULL;
++
+         if (bg->pixbuf_cache &&
+             gdk_pixbuf_get_width (bg->pixbuf_cache) != width &&
+             gdk_pixbuf_get_height (bg->pixbuf_cache) != height) {
+@@ -1071,16 +1065,10 @@ gnome_bg_create_surface (GnomeBG           *bg,
+ 
+       /* has the side effect of loading and caching pixbuf only when in tile mode */
+       gnome_bg_get_pixmap_size (bg, width, height, &pm_width, &pm_height);
+-      
+-      if (root) {
+-              surface = make_root_pixmap (gdk_window_get_screen (window),
+-                                         pm_width, pm_height);
+-      }
+-      else {
+-              surface = gdk_window_create_similar_surface (window,
+-                                                             CAIRO_CONTENT_COLOR,
+-                                                             pm_width, pm_height);
+-      }
++
++      surface = gdk_window_create_similar_surface (window,
++                                                     CAIRO_CONTENT_COLOR,
++                                                     pm_width, pm_height);
+ 
+       if (surface == NULL)
+               return NULL;
+@@ -1153,57 +1141,6 @@ gnome_bg_is_dark (GnomeBG *bg,
+       return intensity < 160; /* biased slightly to be dark */
+ }
+ 
+-/* 
+- * Create a persistent pixmap. We create a separate display
+- * and set the closedown mode on it to RetainPermanent.
+- */
+-static cairo_surface_t *
+-make_root_pixmap (GdkScreen *screen, gint width, gint height)
+-{
+-      Display *display;
+-        const char *display_name;
+-      Pixmap result;
+-        cairo_surface_t *surface;
+-      int screen_num;
+-      int depth;
+-      
+-      screen_num = gdk_screen_get_number (screen);
+-      
+-      gdk_flush ();
+-      
+-      display_name = gdk_display_get_name (gdk_screen_get_display (screen));
+-      display = XOpenDisplay (display_name);
+-      
+-        if (display == NULL) {
+-                g_warning ("Unable to open display '%s' when setting "
+-                         "background pixmap\n",
+-                           (display_name) ? display_name : "NULL");
+-                return NULL;
+-        }
+-      
+-      /* Desktop background pixmap should be created from 
+-       * dummy X client since most applications will try to
+-       * kill it with XKillClient later when changing pixmap
+-       */
+-      
+-      XSetCloseDownMode (display, RetainPermanent);
+-      
+-      depth = DefaultDepth (display, screen_num);
+-
+-      result = XCreatePixmap (display,
+-                              RootWindow (display, screen_num),
+-                              width, height, depth);
+-      
+-      XCloseDisplay (display);
+-      
+-      surface = cairo_xlib_surface_create (GDK_SCREEN_XDISPLAY (screen),
+-                                             result,
+-                                             GDK_VISUAL_XVISUAL (gdk_screen_get_system_visual (screen)),
+-                                           width, height);
+-
+-      return surface;
+-}
+-
+ static gboolean
+ get_original_size (const char *filename,
+                  int        *orig_width,
+@@ -1329,168 +1266,7 @@ gnome_bg_create_thumbnail (GnomeBG               *bg,
+ cairo_surface_t *
+ gnome_bg_get_surface_from_root (GdkScreen *screen)
+ {
+-      int result;
+-      gint format;
+-      gulong nitems;
+-      gulong bytes_after;
+-      gpointer data;
+-      Atom type;
+-      Display *display;
+-      int screen_num;
+-      cairo_surface_t *surface;
+-      cairo_surface_t *source_pixmap;
+-      int width, height;
+-      cairo_t *cr;
+-
+-      display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
+-      screen_num = gdk_screen_get_number (screen);
+-
+-      result = XGetWindowProperty (display,
+-                                   RootWindow (display, screen_num),
+-                                   gdk_x11_get_xatom_by_name ("_XROOTPMAP_ID"),
+-                                   0L, 1L, False, XA_PIXMAP,
+-                                   &type, &format, &nitems, &bytes_after,
+-                                   (guchar **) &data);
+-      surface = NULL;
+-      source_pixmap = NULL;
+-
+-      if (result != Success || type != XA_PIXMAP ||
+-          format != 32 || nitems != 1) {
+-              XFree (data);
+-              data = NULL;
+-      }
+-
+-      if (data != NULL) {
+-                Pixmap xpixmap = *(Pixmap *) data;
+-                Window root_return;
+-                int x_ret, y_ret;
+-                unsigned int w_ret, h_ret, bw_ret, depth_ret;
+-
+-              gdk_error_trap_push ();
+-                if (XGetGeometry (GDK_SCREEN_XDISPLAY (screen),
+-                                  xpixmap,
+-                                  &root_return,
+-                                  &x_ret, &y_ret, &w_ret, &h_ret, &bw_ret, &depth_ret)) {
+-                        source_pixmap = cairo_xlib_surface_create (GDK_SCREEN_XDISPLAY (screen),
+-                                                                   xpixmap,
+-                                                                   GDK_VISUAL_XVISUAL 
(gdk_screen_get_system_visual (screen)),
+-                                                                   w_ret, h_ret);
+-                }
+-
+-                gdk_error_trap_pop_ignored ();
+-      }
+-
+-      width = gdk_screen_get_width (screen);
+-      height = gdk_screen_get_height (screen);
+-
+-        if (source_pixmap) {
+-                surface = cairo_surface_create_similar (source_pixmap,
+-                                                        CAIRO_CONTENT_COLOR,
+-                                                        width, height);
+-
+-                cr = cairo_create (surface);
+-                cairo_set_source_surface (cr, source_pixmap, 0, 0);
+-                cairo_paint (cr);
+-
+-                if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {
+-                        cairo_surface_destroy (surface);
+-                        surface = NULL;
+-                }
+-
+-                cairo_destroy (cr);
+-        }
+-
+-        if (surface == NULL) {
+-              surface = gdk_window_create_similar_surface (gdk_screen_get_root_window (screen),
+-                                                             CAIRO_CONTENT_COLOR,
+-                                                             width, height);
+-        }
+-
+-      if (source_pixmap != NULL)
+-              cairo_surface_destroy (source_pixmap);
+-
+-      if (data != NULL)
+-              XFree (data);
+-
+-      return surface;
+-}
+-
+-static void
+-gnome_bg_set_root_pixmap_id (GdkScreen       *screen,
+-                           cairo_surface_t *surface)
+-{
+-      int      result;
+-      gint     format;
+-      gulong   nitems;
+-      gulong   bytes_after;
+-      gpointer data_esetroot;
+-      Pixmap   pixmap_id;
+-      Atom     type;
+-      Display *display;
+-      int      screen_num;
+-      GdkRGBA *average;
+-
+-      screen_num = gdk_screen_get_number (screen);
+-      data_esetroot = NULL;
+-
+-      display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
+-
+-      result = XGetWindowProperty (display,
+-                                   RootWindow (display, screen_num),
+-                                   gdk_x11_get_xatom_by_name ("ESETROOT_PMAP_ID"),
+-                                   0L, 1L, False, XA_PIXMAP,
+-                                   &type, &format, &nitems,
+-                                   &bytes_after,
+-                                   (guchar **) &data_esetroot);
+-
+-      if (data_esetroot != NULL) {
+-              if (result == Success && type == XA_PIXMAP &&
+-                  format == 32 &&
+-                  nitems == 1) {
+-                      gdk_error_trap_push ();
+-                      XKillClient (display, *(Pixmap *)data_esetroot);
+-                        gdk_error_trap_pop_ignored ();
+-              }
+-              XFree (data_esetroot);
+-      }
+-      
+-      pixmap_id = cairo_xlib_surface_get_drawable (surface);
+-      
+-      XChangeProperty (display, RootWindow (display, screen_num),
+-                       gdk_x11_get_xatom_by_name ("ESETROOT_PMAP_ID"),
+-                       XA_PIXMAP, 32, PropModeReplace,
+-                       (guchar *) &pixmap_id, 1);
+-      XChangeProperty (display, RootWindow (display, screen_num),
+-                       gdk_x11_get_xatom_by_name ("_XROOTPMAP_ID"), XA_PIXMAP,
+-                       32, PropModeReplace,
+-                       (guchar *) &pixmap_id, 1);
+-
+-      average = cairo_surface_get_user_data (surface, &average_color_key);
+-      if (average != NULL) {
+-              gchar *string;
+-
+-              string = gdk_rgba_to_string (average);
+-
+-              /* X encodes string lists as one big string with a nul
+-               * terminator after each item in the list.  That's why
+-               * the strlen has to be given; scanning for nul would
+-               * only find the first item.
+-               *
+-               * For now, we only want to set a single string.
+-               * Fortunately, since this is C, it comes with its own
+-               * nul and we can just give strlen + 1 for the size of
+-               * our "list".
+-               */
+-              XChangeProperty (display, RootWindow (display, screen_num),
+-                               gdk_x11_get_xatom_by_name ("_GNOME_BACKGROUND_REPRESENTATIVE_COLORS"),
+-                               XA_STRING, 8, PropModeReplace,
+-                               (guchar *) string, strlen (string) + 1);
+-              g_free (string);
+-      } else {
+-              /* Could happen if we didn't create the surface... */
+-              XDeleteProperty (display, RootWindow (display, screen_num),
+-                               gdk_x11_get_xatom_by_name ("_GNOME_BACKGROUND_REPRESENTATIVE_COLORS"));
+-      }
++      return NULL;
+ }
+ 
+ /**
+@@ -1509,27 +1285,6 @@ gnome_bg_set_root_pixmap_id (GdkScreen       *screen,
+ void
+ gnome_bg_set_surface_as_root (GdkScreen *screen, cairo_surface_t *surface)
+ {
+-      Display *display;
+-      int      screen_num;
+-
+-      g_return_if_fail (screen != NULL);
+-      g_return_if_fail (surface != NULL);
+-      g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB);
+-
+-      screen_num = gdk_screen_get_number (screen);
+-
+-      display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
+-
+-      gdk_x11_display_grab (gdk_screen_get_display (screen));
+-
+-      gnome_bg_set_root_pixmap_id (screen, surface);
+-
+-      XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
+-                                  cairo_xlib_surface_get_drawable (surface));
+-      XClearWindow (display, RootWindow (display, screen_num));
+-
+-      gdk_display_flush (gdk_screen_get_display (screen));
+-      gdk_x11_display_ungrab (gdk_screen_get_display (screen));
+ }
+ 
+ /**
+@@ -1548,35 +1303,7 @@ GnomeBGCrossfade *
+ gnome_bg_set_surface_as_root_with_crossfade (GdkScreen       *screen,
+                                            cairo_surface_t *surface)
+ {
+-      GdkDisplay *display;
+-      GdkWindow *root_window;
+-      cairo_surface_t *old_surface;
+-      int      width, height;
+-      GnomeBGCrossfade *fade;
+-
+-      g_return_val_if_fail (screen != NULL, NULL);
+-      g_return_val_if_fail (surface != NULL, NULL);
+-
+-      root_window = gdk_screen_get_root_window (screen);
+-
+-      width = gdk_screen_get_width (screen);
+-      height = gdk_screen_get_height (screen);
+-
+-      fade = gnome_bg_crossfade_new (width, height);
+-
+-      display = gdk_screen_get_display (screen);
+-      gdk_x11_display_grab (display);
+-      old_surface = gnome_bg_get_surface_from_root (screen);
+-      gnome_bg_set_root_pixmap_id (screen, surface);
+-      gnome_bg_crossfade_set_start_surface (fade, old_surface);
+-      cairo_surface_destroy (old_surface);
+-      gnome_bg_crossfade_set_end_surface (fade, surface);
+-      gdk_display_flush (display);
+-      gdk_x11_display_ungrab (display);
+-
+-      gnome_bg_crossfade_start (fade, root_window);
+-
+-      return fade;
++      return NULL;
+ }
+ 
+ /* Implementation of the pixbuf cache */
+-- 
+2.23.0
+


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]