summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2020-02-17 10:45:07 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2020-12-08 14:55:41 +0100
commitcdc739dc90b8c533cef1a60deca709044cd837c2 (patch)
tree92a772f5e879632d44f0b9129a6a3c7c99cc51b4
parent9b5a9af3b5573cc8163c551780d462497a4c0e12 (diff)
gpicview: drop gdk-x11 dependency
Remove the only place where gdk-x11 is needed and thus make it work under gtk under wayland. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit c8d84165284d95c0775584537ab2a2e9490723ea)
-rw-r--r--recipes-lxde/gpicview/gpicview/remove-gdk-x11.patch136
-rw-r--r--recipes-lxde/gpicview/gpicview_0.2.5.bb7
2 files changed, 141 insertions, 2 deletions
diff --git a/recipes-lxde/gpicview/gpicview/remove-gdk-x11.patch b/recipes-lxde/gpicview/gpicview/remove-gdk-x11.patch
new file mode 100644
index 0000000..a1f97b3
--- /dev/null
+++ b/recipes-lxde/gpicview/gpicview/remove-gdk-x11.patch
@@ -0,0 +1,136 @@
+For xwayland gdk/gdkx.h does not work.
+Remove the more elaborate gf_display_get_workarea function and use only
+the fallback.
+--- ./src/working-area.c.orig 2016-02-20 22:38:31.000000000 +0000
++++ ./src/working-area.c 2020-01-07 13:37:47.023817524 +0000
+@@ -23,126 +23,11 @@
+ */
+
+ # include <gdk/gdk.h>
+-# include <gdk/gdkx.h>
+-# include <X11/Xlib.h>
+-# include <X11/Xutil.h>
+-# include <X11/Xatom.h>
+-
+-void get_working_area(GdkScreen* screen, GdkRectangle *rect);
+-
+-static gboolean gf_display_get_workarea(GdkScreen* g_screen, GdkRectangle *rect) {
+- Atom xa_desktops, xa_current, xa_workarea, xa_type;
+- Display *x_display;
+- Window x_root;
+- guint32 desktops = 0, current = 0;
+- gulong *workareas, len, fill;
+- guchar *data;
+- gint format;
+-
+- GdkDisplay *g_display;
+- Screen *x_screen;
+-
+- /* get the gdk display */
+- g_display = gdk_display_get_default();
+- if(!g_display)
+- return FALSE;
+-
+- /* get the x display from the gdk display */
+- x_display = gdk_x11_display_get_xdisplay(g_display);
+- if(!x_display)
+- return FALSE;
+-
+- /* get the x screen from the gdk screen */
+- x_screen = gdk_x11_screen_get_xscreen(g_screen);
+- if(!x_screen)
+- return FALSE;
+-
+- /* get the root window from the screen */
+- x_root = XRootWindowOfScreen(x_screen);
+-
+- /* find the _NET_NUMBER_OF_DESKTOPS atom */
+- xa_desktops = XInternAtom(x_display, "_NET_NUMBER_OF_DESKTOPS", True);
+- if(xa_desktops == None)
+- return FALSE;
+-
+- /* get the number of desktops */
+- if(XGetWindowProperty(x_display, x_root, xa_desktops, 0, 1, False,
+- XA_CARDINAL, &xa_type, &format, &len, &fill,
+- &data) != Success)
+- {
+- return FALSE;
+- }
+-
+- if(!data)
+- return FALSE;
+-
+- desktops = *(guint32 *)data;
+- XFree(data);
+-
+- /* find the _NET_CURRENT_DESKTOP atom */
+- xa_current = XInternAtom(x_display, "_NET_CURRENT_DESKTOP", True);
+- if(xa_current == None)
+- return FALSE;
+-
+- /* get the current desktop */
+- if(XGetWindowProperty(x_display, x_root, xa_current, 0, 1, False,
+- XA_CARDINAL, &xa_type, &format, &len, &fill,
+- &data) != Success)
+- {
+- return FALSE;
+- }
+-
+- if(!data)
+- return FALSE;
+-
+- current = *(guint32 *)data;
+- XFree(data);
+-
+- /* find the _NET_WORKAREA atom */
+- xa_workarea = XInternAtom(x_display, "_NET_WORKAREA", True);
+- if(xa_workarea == None)
+- return FALSE;
+-
+- if(XGetWindowProperty(x_display, x_root, xa_workarea, 0, (glong)(4 * 32),
+- False, AnyPropertyType, &xa_type, &format, &len,
+- &fill, &data) != Success)
+- {
+- return FALSE;
+- }
+-
+- /* make sure the type and format are good */
+- if(xa_type == None || format == 0)
+- return FALSE;
+-
+- /* make sure we don't have any leftovers */
+- if(fill)
+- return FALSE;
+-
+- /* make sure len divides evenly by 4 */
+- if(len % 4)
+- return FALSE;
+-
+- /* it's good, lets use it */
+- workareas = (gulong *)(guint32 *)data;
+-
+- rect->x = (guint32)workareas[current * 4];
+- rect->y = (guint32)workareas[current * 4 + 1];
+- rect->width = (guint32)workareas[current * 4 + 2];
+- rect->height = (guint32)workareas[current * 4 + 3];
+-
+- /* clean up our memory */
+- XFree(data);
+-
+- return TRUE;
+-}
+
+ void get_working_area(GdkScreen* screen, GdkRectangle *rect)
+ {
+- if( !gf_display_get_workarea(screen, rect) )
+- {
+- rect->x = 0;
+- rect->y = 0;
+- rect->width = gdk_screen_width();
+- rect->height = gdk_screen_height();
+- }
++ rect->x = 0;
++ rect->y = 0;
++ rect->width = gdk_screen_width();
++ rect->height = gdk_screen_height();
+ }
diff --git a/recipes-lxde/gpicview/gpicview_0.2.5.bb b/recipes-lxde/gpicview/gpicview_0.2.5.bb
index f399e21..cee82b7 100644
--- a/recipes-lxde/gpicview/gpicview_0.2.5.bb
+++ b/recipes-lxde/gpicview/gpicview_0.2.5.bb
@@ -5,10 +5,13 @@ SECTION = "x11"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-DEPENDS = "glib-2.0-native gtk+ intltool-native jpeg"
+DEPENDS = "glib-2.0-native intltool-native jpeg"
RDEPENDS_${PN} = "adwaita-icon-theme"
-SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/${P}.tar.xz"
+SRC_URI = " \
+ ${SOURCEFORGE_MIRROR}/lxde/${P}.tar.xz \
+ file://remove-gdk-x11.patch \
+"
SRC_URI[md5sum] = "26be9b0c5a234f1afe7d83d02a4a33f4"
SRC_URI[sha256sum] = "38466058e53702450e5899193c4b264339959b563dd5cd81f6f690de32d82942"