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;
#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
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;
pr->stereo_mode = PR_STEREO_NONE;
- pr->renderer = RENDERER_NEW(pr);
+ pr->renderer = pr_backend_renderer_new(pr);
pr->renderer2 = NULL;
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
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;
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
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);
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");
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;