E_CONFIG_VAL(D, T, loose_sync, UCHAR);
E_CONFIG_VAL(D, T, grab, UCHAR);
E_CONFIG_VAL(D, T, vsync, UCHAR);
+ E_CONFIG_VAL(D, T, swap_mode, UCHAR);
E_CONFIG_VAL(D, T, keep_unmapped, UCHAR);
E_CONFIG_VAL(D, T, send_flush, UCHAR);
E_CONFIG_VAL(D, T, send_dump, UCHAR);
cfg->loose_sync = 1;
cfg->grab = 1;
cfg->vsync = 1;
+ cfg->swap_mode = ECORE_EVAS_GL_X11_SWAP_MODE_AUTO;
cfg->keep_unmapped = 1;
cfg->send_flush = 1; // implement
cfg->send_dump = 1; // implement
int loose_sync;
int grab;
int vsync;
+ int swap_mode;
const char *shadow_style;
cfdata->loose_sync = _comp_mod->conf->loose_sync;
cfdata->grab = _comp_mod->conf->grab;
cfdata->vsync = _comp_mod->conf->vsync;
+ cfdata->swap_mode = _comp_mod->conf->swap_mode;
if (_comp_mod->conf->shadow_style)
cfdata->shadow_style = eina_stringshare_add(_comp_mod->conf->shadow_style);
///////////////////////////////////////////
ol = e_widget_list_add(evas, 0, 0);
- ob = e_widget_check_add(evas, _("Tear-free updates (VSynced)"), &(cfdata->vsync));
- e_widget_list_object_append(ol, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Sync windows"), &(cfdata->efl_sync));
e_widget_list_object_append(ol, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Loose sync"), &(cfdata->loose_sync));
of = e_widget_framelist_add(evas, _("OpenGL options"), 0);
e_widget_framelist_content_align_set(of, 0.5, 0.0);
- ob = e_widget_check_add(evas, _("Texture from pixmap"), &(cfdata->texture_from_pixmap));
+ ob = e_widget_check_add(evas, _("Tear-free updates (VSynced)"), &(cfdata->vsync));
e_widget_framelist_object_append(of, ob);
- ob = e_widget_check_add(evas, _("Indirect OpenGL (EXPERIMENTAL)"), &(cfdata->indirect));
+ ob = e_widget_check_add(evas, _("Texture from pixmap"), &(cfdata->texture_from_pixmap));
e_widget_framelist_object_append(of, ob);
+#ifdef ECORE_EVAS_GL_X11_OPT_SWAP_MODE
+ if ((evas_version->major >= 1) &&
+ (evas_version->minor >= 7) &&
+ (evas_version->micro >= 99))
+ {
+ ob = e_widget_label_add(evas, _("Assume swapping method:"));
+ e_widget_framelist_object_append(of, ob);
+ rg = e_widget_radio_group_new(&(cfdata->swap_mode));
+ ob = e_widget_radio_add(evas, _("Auto"), ECORE_EVAS_GL_X11_SWAP_MODE_AUTO, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Invalidate (full redraw)"), ECORE_EVAS_GL_X11_SWAP_MODE_FULL, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Copy from back to front"), ECORE_EVAS_GL_X11_SWAP_MODE_COPY, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Double buffered swaps"), ECORE_EVAS_GL_X11_SWAP_MODE_DOUBLE, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Triple buffered swaps"), ECORE_EVAS_GL_X11_SWAP_MODE_TRIPLE, rg);
+ e_widget_framelist_object_append(of, ob);
+ }
+#endif
+// lets not offer this anymore
+// ob = e_widget_check_add(evas, _("Indirect OpenGL (EXPERIMENTAL)"), &(cfdata->indirect));
+// e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(ol, of, 1, 1, 0.5);
}
}
(cfdata->texture_from_pixmap != _comp_mod->conf->texture_from_pixmap) ||
(cfdata->efl_sync != _comp_mod->conf->efl_sync) ||
(cfdata->loose_sync != _comp_mod->conf->loose_sync) ||
- (cfdata->vsync != _comp_mod->conf->vsync))
+ (cfdata->vsync != _comp_mod->conf->vsync) ||
+ (cfdata->swap_mode != _comp_mod->conf->swap_mode))
{
E_Action *a;
_comp_mod->conf->efl_sync = cfdata->efl_sync;
_comp_mod->conf->loose_sync = cfdata->loose_sync;
_comp_mod->conf->vsync = cfdata->vsync;
+ _comp_mod->conf->swap_mode = cfdata->swap_mode;
a = e_action_find("restart");
if ((a) && (a->func.go)) a->func.go(NULL, NULL);