changeset 2084:1c712b43f063

added option for clutter renderer
author Vladimir Nadvornik <nadvornik@suse.cz>
date Fri, 17 Aug 2012 23:08:34 +0200
parents 496a6c7314c4
children 4819bb191532
files src/options.h src/pixbuf-renderer.c src/preferences.c src/rcfile.c
diffstat 4 files changed, 27 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/options.h	Thu Aug 16 23:15:17 2012 +0200
+++ b/src/options.h	Fri Aug 17 23:08:34 2012 +0200
@@ -67,6 +67,7 @@
 		gboolean zoom_to_fit_allow_expand;
 		guint zoom_quality;
 		gint zoom_increment;	/* 10 is 1.0, 5 is 0.05, 20 is 2.0, etc. */
+		gboolean use_clutter_renderer;
 
 		gboolean use_custom_border_color_in_fullscreen;
 		gboolean use_custom_border_color;
--- a/src/pixbuf-renderer.c	Thu Aug 16 23:15:17 2012 +0200
+++ b/src/pixbuf-renderer.c	Fri Aug 17 23:08:34 2012 +0200
@@ -25,13 +25,6 @@
 
 #include <gtk/gtk.h>
 
-#ifdef HAVE_CLUTTER
-/* FIXME: make this configurable */
-#define RENDERER_NEW(pr) renderer_clutter_new(pr)
-#else
-#define RENDERER_NEW(pr) renderer_tiles_new(pr)
-#endif
-
 /* comment this out if not using this from within Geeqie
  * defining GQ_BUILD does these things:
  *   - Sets the shift-click scroller pixbuf to a nice icon instead of a black box
@@ -386,6 +379,20 @@
 			     G_TYPE_NONE, 0);
 }
 
+static RendererFuncs *pr_backend_renderer_new(PixbufRenderer *pr)
+{
+	if (options->image.use_clutter_renderer)
+		{
+#ifdef HAVE_CLUTTER
+		return renderer_clutter_new(pr);
+#else
+		DEBUG_0("Geeqie is built without clutter renderer support");
+#endif
+		}
+	return renderer_tiles_new(pr);
+}	
+
+
 static void pixbuf_renderer_init(PixbufRenderer *pr)
 {
 	GtkWidget *box;
@@ -419,7 +426,7 @@
 	
 	pr->stereo_mode = PR_STEREO_NONE;
 	
-	pr->renderer = RENDERER_NEW(pr);
+	pr->renderer = pr_backend_renderer_new(pr);
 	
 	pr->renderer2 = NULL;
 
@@ -2605,13 +2612,13 @@
 
 static void pr_stereo_set(PixbufRenderer *pr)
 {
-	if (!pr->renderer) pr->renderer = RENDERER_NEW(pr);
+	if (!pr->renderer) pr->renderer = pr_backend_renderer_new(pr);
 	
 	pr->renderer->stereo_set(pr->renderer, pr->stereo_mode & ~PR_STEREO_MIRROR_RIGHT & ~PR_STEREO_FLIP_RIGHT);
 	
 	if (pr->stereo_mode & (PR_STEREO_HORIZ | PR_STEREO_VERT | PR_STEREO_FIXED))
 		{
-		if (!pr->renderer2) pr->renderer2 = RENDERER_NEW(pr);
+		if (!pr->renderer2) pr->renderer2 = pr_backend_renderer_new(pr);
 		pr->renderer2->stereo_set(pr->renderer2, (pr->stereo_mode & ~PR_STEREO_MIRROR_LEFT & ~PR_STEREO_FLIP_LEFT) | PR_STEREO_RIGHT);
 		}
 	else
@@ -2669,7 +2676,7 @@
 	pr->stereo_temp_disable = disable;
 	if (disable)
 		{
-		if (!pr->renderer) pr->renderer = RENDERER_NEW(pr);
+		if (!pr->renderer) pr->renderer = pr_backend_renderer_new(pr);
 		pr->renderer->stereo_set(pr->renderer, PR_STEREO_NONE);
 		if (pr->renderer2) pr->renderer2->free(pr->renderer2);
 		pr->renderer2 = NULL;
--- a/src/preferences.c	Thu Aug 16 23:15:17 2012 +0200
+++ b/src/preferences.c	Fri Aug 17 23:08:34 2012 +0200
@@ -216,6 +216,7 @@
 	options->image.max_window_size = c_options->image.max_window_size;
 	options->image.limit_autofit_size = c_options->image.limit_autofit_size;
 	options->image.max_autofit_size = c_options->image.max_autofit_size;
+	options->image.use_clutter_renderer = c_options->image.use_clutter_renderer;
 	options->progressive_key_scrolling = c_options->progressive_key_scrolling;
 	if (options->thumbnails.max_width != c_options->thumbnails.max_width
 	    || options->thumbnails.max_height != c_options->thumbnails.max_height
@@ -1405,6 +1406,11 @@
 	table = pref_table_new(group, 2, 1, FALSE, FALSE);
 	add_quality_menu(table, 0, 0, _("Quality:"), options->image.zoom_quality, &c_options->image.zoom_quality);
 
+#ifdef HAVE_CLUTTER
+	pref_checkbox_new_int(group, _("Use GPU acceleration via Clutter library"),
+			      options->image.use_clutter_renderer, &c_options->image.use_clutter_renderer);
+#endif
+
 	pref_checkbox_new_int(group, _("Two pass rendering (apply HQ zoom and color correction in second pass)"),
 			      options->image.zoom_2pass, &c_options->image.zoom_2pass);
 
--- a/src/rcfile.c	Thu Aug 16 23:15:17 2012 +0200
+++ b/src/rcfile.c	Fri Aug 17 23:08:34 2012 +0200
@@ -340,6 +340,7 @@
 	WRITE_NL(); WRITE_BOOL(*options, image.use_custom_border_color);
 	WRITE_NL(); WRITE_BOOL(*options, image.use_custom_border_color_in_fullscreen);
 	WRITE_NL(); WRITE_COLOR(*options, image.border_color);
+	WRITE_NL(); WRITE_BOOL(*options, image.use_clutter_renderer);
 
 //	WRITE_SUBTITLE("Thumbnails Options");
 
@@ -632,6 +633,7 @@
 		if (READ_BOOL(*options, image.use_custom_border_color)) continue;
 		if (READ_BOOL(*options, image.use_custom_border_color_in_fullscreen)) continue;
 		if (READ_COLOR(*options, image.border_color)) continue;
+		if (READ_BOOL(*options, image.use_clutter_renderer)) continue;
 
 		/* thumbnails options */
 		if (READ_INT_CLAMP(*options, thumbnails.max_width, 16, 512)) continue;