Mercurial > hg > forks > geeqie
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;