diff options
| author | Wu Xiaotian <[email protected]> | 2019-12-27 17:13:43 +0800 | 
|---|---|---|
| committer | raveit65 <[email protected]> | 2020-01-09 00:04:07 +0100 | 
| commit | be4fa2808c4e1a36c2c9b58c1267a54cdda6e495 (patch) | |
| tree | cebf7d01ff8450fa58140f4d8137b073f2c19ff2 | |
| parent | c8773d8a8ad908db7cc14e600c359f116e0d241a (diff) | |
| download | eom-be4fa2808c4e1a36c2c9b58c1267a54cdda6e495.tar.bz2 eom-be4fa2808c4e1a36c2c9b58c1267a54cdda6e495.tar.xz | |
enable wayland support
| -rw-r--r-- | src/eom-application.c | 17 | ||||
| -rw-r--r-- | src/eom-image-private.h | 2 | ||||
| -rw-r--r-- | src/eom-image.c | 20 | ||||
| -rw-r--r-- | src/eom-metadata-reader-jpg.c | 9 | ||||
| -rw-r--r-- | src/eom-metadata-reader-png.c | 25 | ||||
| -rw-r--r-- | src/eom-metadata-reader.c | 2 | ||||
| -rw-r--r-- | src/eom-window.c | 14 | ||||
| -rw-r--r-- | src/main.c | 2 | 
8 files changed, 50 insertions, 41 deletions
| diff --git a/src/eom-application.c b/src/eom-application.c index a46ead7..20d9aca 100644 --- a/src/eom-application.c +++ b/src/eom-application.c @@ -332,24 +332,11 @@ eom_application_get_file_window (EomApplication *application, GFile *file)  static void  eom_application_show_window (EomWindow *window, gpointer user_data)  { -	guint32 timestamp = GPOINTER_TO_UINT (user_data); - -	/* set the proper interaction time on the window. -	 * Fall back to roundtripping to the X server when we -	 * don't have the timestamp, e.g. when launched from -	 * terminal. We also need to make sure that the window -	 * has been realized otherwise it will not work. lame. -	 */  	if (!gtk_widget_get_realized (GTK_WIDGET (window)))  		gtk_widget_realize (GTK_WIDGET (window)); -	if (timestamp <= 0) -		timestamp = gdk_x11_get_server_time (gtk_widget_get_window (GTK_WIDGET (window))); - -	gdk_x11_window_set_user_time (gtk_widget_get_window (GTK_WIDGET (window)), -				                  timestamp); - -	gtk_window_present (GTK_WINDOW (window)); +	gtk_window_present_with_time (GTK_WINDOW (window), +				      GPOINTER_TO_UINT (user_data));  }  /** diff --git a/src/eom-image-private.h b/src/eom-image-private.h index fbe46ae..baa401e 100644 --- a/src/eom-image-private.h +++ b/src/eom-image-private.h @@ -73,7 +73,7 @@ struct _EomImagePrivate {   	XmpPtr   xmp;  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	cmsHPROFILE       profile;  #endif diff --git a/src/eom-image.c b/src/eom-image.c index f8add9d..01a869a 100644 --- a/src/eom-image.c +++ b/src/eom-image.c @@ -24,6 +24,7 @@  #endif  #define GDK_PIXBUF_ENABLE_BACKEND +#include <gdk/gdkx.h>  #include "eom-image.h"  #include "eom-image-private.h" @@ -58,7 +59,7 @@  #include <libexif/exif-loader.h>  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  #include <lcms2.h>  #ifndef EXIF_TAG_GAMMA  #define EXIF_TAG_GAMMA 0xa500 @@ -142,9 +143,11 @@ eom_image_free_mem_private (EomImage *image)  		}  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  		if (priv->profile != NULL) { -			cmsCloseProfile (priv->profile); +			if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { +				cmsCloseProfile (priv->profile); +			}  			priv->profile = NULL;  		}  #endif @@ -306,7 +309,7 @@ eom_image_init (EomImage *img)  #ifdef HAVE_EXEMPI  	img->priv->xmp = NULL;  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	img->priv->profile = NULL;  #endif  #ifdef HAVE_RSVG @@ -616,7 +619,7 @@ eom_image_get_file_info (EomImage *img,  	}  } -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  void  eom_image_apply_display_profile (EomImage *img, cmsHPROFILE screen)  { @@ -630,6 +633,9 @@ eom_image_apply_display_profile (EomImage *img, cmsHPROFILE screen)  	priv = img->priv;  	if (screen == NULL) return; +	if (!GDK_IS_X11_DISPLAY(gdk_display_get_default())) { +		return; +	}  	if (priv->profile == NULL) {  		/* Check whether GdkPixbuf was able to extract a profile */ @@ -1062,7 +1068,7 @@ eom_image_real_load (EomImage *img,  				if (set_metadata) {  					eom_image_set_exif_data (img, md_reader); -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  					eom_image_set_icc_data (img, md_reader);  #endif @@ -1348,7 +1354,7 @@ eom_image_get_pixbuf (EomImage *img)  	return image;  } -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  cmsHPROFILE  eom_image_get_profile (EomImage *img)  { diff --git a/src/eom-metadata-reader-jpg.c b/src/eom-metadata-reader-jpg.c index f965861..b49135a 100644 --- a/src/eom-metadata-reader-jpg.c +++ b/src/eom-metadata-reader-jpg.c @@ -26,6 +26,7 @@  #endif  #include <string.h> +#include <gdk/gdkx.h>  #include "eom-metadata-reader.h"  #include "eom-metadata-reader-jpg.h" @@ -497,7 +498,7 @@ eom_metadata_reader_jpg_get_xmp_data (EomMetadataReaderJpg *emr )   * parse the sections and construct a single memory chunk, or maybe even parse   * the profile.   */ -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  static gpointer  eom_metadata_reader_jpg_get_icc_profile (EomMetadataReaderJpg *emr)  { @@ -509,7 +510,9 @@ eom_metadata_reader_jpg_get_icc_profile (EomMetadataReaderJpg *emr)  	priv = emr->priv;  	if (priv->icc_chunk) { -		profile = cmsOpenProfileFromMem(priv->icc_chunk + 14, priv->icc_len - 14); +		if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { +			profile = cmsOpenProfileFromMem(priv->icc_chunk + 14, priv->icc_len - 14); +		}  		if (profile) {  			eom_debug_message (DEBUG_LCMS, "JPEG has ICC profile"); @@ -653,7 +656,7 @@ eom_metadata_reader_jpg_init_emr_iface (gpointer g_iface, gpointer iface_data)  		(gpointer (*) (EomMetadataReader *self))  			eom_metadata_reader_jpg_get_exif_data;  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	iface->get_icc_profile =  		(gpointer (*) (EomMetadataReader *self))  			eom_metadata_reader_jpg_get_icc_profile; diff --git a/src/eom-metadata-reader-png.c b/src/eom-metadata-reader-png.c index eadf036..a0ca172 100644 --- a/src/eom-metadata-reader-png.c +++ b/src/eom-metadata-reader-png.c @@ -28,6 +28,7 @@  #include <math.h>  #include <string.h>  #include <zlib.h> +#include <gdk/gdkx.h>  #include "eom-metadata-reader.h"  #include "eom-metadata-reader-png.h" @@ -477,7 +478,7 @@ eom_metadata_reader_png_get_xmp_data (EomMetadataReaderPng *emr )  }  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  #define EXTRACT_DOUBLE_UINT_BLOCK_OFFSET(chunk,offset,divider) \  		(double)(GUINT32_FROM_BE(*((guint32*)((chunk)+((offset)*4))))/(double)(divider)) @@ -585,7 +586,9 @@ eom_metadata_reader_png_get_icc_profile (EomMetadataReaderPng *emr)  			return NULL;  		} -		profile = cmsOpenProfileFromMem(outbuf, zstr.total_out); +		if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { +			profile = cmsOpenProfileFromMem(outbuf, zstr.total_out); +		}  		inflateEnd (&zstr);  		g_free (outbuf); @@ -597,7 +600,9 @@ eom_metadata_reader_png_get_icc_profile (EomMetadataReaderPng *emr)  		/* If the file has an sRGB chunk the image data is in the sRGB  		 * colorspace. lcms has a built-in sRGB profile. */ -		profile = cmsCreate_sRGBProfile (); +		if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { +			profile = cmsCreate_sRGBProfile (); +		}  	}  	if (!profile && priv->cHRM_chunk && priv->gAMA_chunk) { @@ -632,13 +637,17 @@ eom_metadata_reader_png_get_icc_profile (EomMetadataReaderPng *emr)  		 * profile instead of computing one that "gets close". */  		if(_chrm_matches_srgb (&whitepoint, &primaries, gammaValue)) {  			eom_debug_message (DEBUG_LCMS, "gAMA and cHRM match sRGB"); -			profile = cmsCreate_sRGBProfile (); +			if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { +				profile = cmsCreate_sRGBProfile (); +			}  		} else {  			gamma[0] = gamma[1] = gamma[2] =  				cmsBuildGamma (NULL, gammaValue); -			profile = cmsCreateRGBProfile (&whitepoint, &primaries, -						       gamma); -			cmsFreeToneCurve(gamma[0]); +			if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { +				profile = cmsCreateRGBProfile (&whitepoint, &primaries, +						gamma); +				cmsFreeToneCurve(gamma[0]); +			}  		}  	} @@ -659,7 +668,7 @@ eom_metadata_reader_png_init_emr_iface (gpointer g_iface, gpointer iface_data)  	iface->finished =  		(gboolean (*) (EomMetadataReader *self))  			eom_metadata_reader_png_finished; -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	iface->get_icc_profile =  		(cmsHPROFILE (*) (EomMetadataReader *self))  			eom_metadata_reader_png_get_icc_profile; diff --git a/src/eom-metadata-reader.c b/src/eom-metadata-reader.c index 187cb06..cd796f0 100644 --- a/src/eom-metadata-reader.c +++ b/src/eom-metadata-reader.c @@ -92,7 +92,7 @@ eom_metadata_reader_get_xmp_data (EomMetadataReader *emr)  }  #endif -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  cmsHPROFILE  eom_metadata_reader_get_icc_profile (EomMetadataReader *emr)  { diff --git a/src/eom-window.c b/src/eom-window.c index fad39b3..a3937d6 100644 --- a/src/eom-window.c +++ b/src/eom-window.c @@ -189,7 +189,7 @@ struct _EomWindowPrivate {  	PeasExtensionSet    *extensions; -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	cmsHPROFILE         *display_profile;  #endif  }; @@ -378,7 +378,7 @@ eom_window_can_save_changed_cb (GSettings *settings, gchar *key, gpointer user_d  	G_GNUC_END_IGNORE_DEPRECATIONS;  } -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  static cmsHPROFILE *  eom_window_get_display_profile (GdkScreen *screen)  { @@ -393,6 +393,10 @@ eom_window_get_display_profile (GdkScreen *screen)  	cmsHPROFILE *profile = NULL;  	char *atom_name; +	if (!GDK_IS_X11_SCREEN (screen)) { +		return NULL; +	} +  	dpy = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));  	if (gdk_x11_screen_get_screen_number (screen) > 0) @@ -1316,7 +1320,7 @@ eom_job_load_cb (EomJobLoad *job, gpointer data)  	priv->image = g_object_ref (job->image);  	if (EOM_JOB (job)->error == NULL) { -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  		eom_image_apply_display_profile (job->image,  						 priv->display_profile);  #endif @@ -4740,7 +4744,7 @@ eom_window_init (EomWindow *window)  	window->priv->mode = EOM_WINDOW_MODE_UNKNOWN;  	window->priv->status = EOM_WINDOW_STATUS_UNKNOWN; -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	window->priv->display_profile =  		eom_window_get_display_profile (screen);  #endif @@ -4884,7 +4888,7 @@ eom_window_dispose (GObject *object)  		priv->file_list = NULL;  	} -#ifdef HAVE_LCMS +#if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11)  	if (priv->display_profile != NULL) {  		cmsCloseProfile (priv->display_profile);  		priv->display_profile = NULL; @@ -103,7 +103,7 @@ main (int argc, char **argv)  	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");  	textdomain (GETTEXT_PACKAGE); -	gdk_set_allowed_backends ("x11"); +	gdk_set_allowed_backends ("wayland,x11");  	ctx = g_option_context_new (_("[FILEā¦]"));  	g_option_context_add_main_entries (ctx, goption_options, PACKAGE); | 
