diff options
3 files changed, 277 insertions, 137 deletions
diff --git a/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch b/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch new file mode 100644 index 0000000..8cf74c1 --- /dev/null +++ b/recipes-graphics/gpicview/gpicview/0001-gpicview-allow-to-build-for-gtk-wayland.patch @@ -0,0 +1,276 @@ +From aa2f81a3e78e7da505bdab465eacce9b37b035e6 Mon Sep 17 00:00:00 2001 +From: Max Krummenacher <max.krummenacher@toradex.com> +Date: Mon, 6 Nov 2023 10:43:46 +0000 +Subject: [PATCH] gpicview: allow to build for gtk/wayland + +For wayland gdk/gdkx.h does not work, even with xwayland. +Remove the more elaborate gf_display_get_workarea function and use the +existing fallback. +With the removal of gdk from the code also remove the dependency +check on x11 from configure. + +Upstream-Status: Inappropriate [Toradex specific] +Upstream targets X11. Removing the use of gdk would remove +functionaliy. + +Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> +--- + Makefile.in | 2 - + configure.ac | 4 -- + data/Makefile.in | 2 - + src/Makefile.am | 5 +- + src/Makefile.in | 7 +-- + src/working-area.c | 123 ++------------------------------------------- + 6 files changed, 6 insertions(+), 137 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 6ecf74a..cad90b7 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -317,8 +317,6 @@ SHELL = @SHELL@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ +diff --git a/configure.ac b/configure.ac +index 2fb2469..1591584 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -56,15 +56,11 @@ AC_SUBST(GTK_LIBS) + + pkg_modules="x11" + +-PKG_CHECK_MODULES(X11, [$pkg_modules]) + AC_CHECK_LIB(jpeg, jpeg_start_decompress, [], + [AC_MSG_ERROR([libjpeg not found])], -lm) + AC_CHECK_HEADER(jpeglib.h, , [AC_MSG_ERROR([libjpeg not found])]) + LIBJPEG='-ljpeg' + +-AC_SUBST(X11_CFLAGS) +-AC_SUBST(X11_LIBS) +- + # Generate po/LINGUAS on the fly rather than relying on translators + # to maintain it manually. This also overcome the problem that Transifex + # cannot add a language to po/LINGUAS if a new po file is submitted. +diff --git a/data/Makefile.in b/data/Makefile.in +index c8c142b..ea2e4ff 100644 +--- a/data/Makefile.in ++++ b/data/Makefile.in +@@ -234,8 +234,6 @@ SHELL = @SHELL@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ +diff --git a/src/Makefile.am b/src/Makefile.am +index 44ecb19..6c7a683 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -2,7 +2,6 @@ + + # set the include path found by configure + gpicview_CPPFLAGS = $(all_includes) \ +- $(X11_CFLAGS) \ + $(GTK_CFLAGS) \ + $(ADDITIONAL_FLAGS) \ + -I$(top_srcdir) \ +@@ -27,7 +26,7 @@ gpicview_SOURCES = \ + + # the library search path. + # use -nodefaultlibs to prevent linking libstdc++ +-gpicview_LDADD = $(X11_LIBS) $(GTK_LIBS) -lm ++gpicview_LDADD = $(GTK_LIBS) -lm + + noinst_HEADERS = \ + glib-mem.h \ +@@ -44,6 +43,4 @@ noinst_HEADERS = \ + + noinst_PROGRAMS=xml-purge + xml_purge_SOURCES=xml-purge.c +-xml_purge_CFLAGS=@X11_CFLAGS@ +-xml_purge_LDADD=@X11_LIBS@ + +diff --git a/src/Makefile.in b/src/Makefile.in +index 24cfe1f..65fea48 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -271,8 +271,6 @@ SHELL = @SHELL@ + STRIP = @STRIP@ + USE_NLS = @USE_NLS@ + VERSION = @VERSION@ +-X11_CFLAGS = @X11_CFLAGS@ +-X11_LIBS = @X11_LIBS@ + XGETTEXT = @XGETTEXT@ + abs_builddir = @abs_builddir@ + abs_srcdir = @abs_srcdir@ +@@ -331,7 +329,6 @@ top_srcdir = @top_srcdir@ + + # set the include path found by configure + gpicview_CPPFLAGS = $(all_includes) \ +- $(X11_CFLAGS) \ + $(GTK_CFLAGS) \ + $(ADDITIONAL_FLAGS) \ + -I$(top_srcdir) \ +@@ -356,7 +353,7 @@ gpicview_SOURCES = \ + + # the library search path. + # use -nodefaultlibs to prevent linking libstdc++ +-gpicview_LDADD = $(X11_LIBS) $(GTK_LIBS) -lm ++gpicview_LDADD = $(GTK_LIBS) -lm + noinst_HEADERS = \ + glib-mem.h \ + image-list.h \ +@@ -371,8 +368,6 @@ noinst_HEADERS = \ + jhead.h + + xml_purge_SOURCES = xml-purge.c +-xml_purge_CFLAGS = @X11_CFLAGS@ +-xml_purge_LDADD = @X11_LIBS@ + all: all-am + + .SUFFIXES: +diff --git a/src/working-area.c b/src/working-area.c +index 86a1fa5..2fa9474 100644 +--- a/src/working-area.c ++++ b/src/working-area.c +@@ -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(); + } +-- +2.35.3 + diff --git a/recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch b/recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch deleted file mode 100644 index a1f97b3..0000000 --- a/recipes-graphics/gpicview/gpicview/remove-gdk-x11.patch +++ /dev/null @@ -1,136 +0,0 @@ -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-graphics/gpicview/gpicview_0.2.5.bb b/recipes-graphics/gpicview/gpicview_0.2.5.bb index 6e1020b..170db77 100644 --- a/recipes-graphics/gpicview/gpicview_0.2.5.bb +++ b/recipes-graphics/gpicview/gpicview_0.2.5.bb @@ -10,7 +10,7 @@ RDEPENDS:${PN} = "adwaita-icon-theme" SRC_URI = " \ ${SOURCEFORGE_MIRROR}/lxde/${P}.tar.xz \ - file://remove-gdk-x11.patch \ + file://0001-gpicview-allow-to-build-for-gtk-wayland.patch \ " SRC_URI[md5sum] = "26be9b0c5a234f1afe7d83d02a4a33f4" SRC_URI[sha256sum] = "38466058e53702450e5899193c4b264339959b563dd5cd81f6f690de32d82942" |