3 struct _E_Config_Dialog_Data
7 int texture_from_pixmap;
14 const char *shadow_style;
20 int disable_overrides;
24 int toggle_changed : 1;
27 Evas_Object *styles_il;
30 int max_unmapped_pixels;
31 int max_unmapped_time;
32 int min_unmapped_time;
40 int fps_average_range;
41 double first_draw_delay;
42 int disable_screen_effects;
43 int enable_advanced_features;
44 // the following options add the "/fast" suffix to the normal groups
56 static void *_create_data(E_Config_Dialog *cfd);
57 static void _free_data(E_Config_Dialog *cfd,
58 E_Config_Dialog_Data *cfdata);
59 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd,
61 E_Config_Dialog_Data *cfdata);
62 static int _basic_apply_data(E_Config_Dialog *cfd,
63 E_Config_Dialog_Data *cfdata);
64 static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd,
66 E_Config_Dialog_Data *cfdata);
67 static int _advanced_apply_data(E_Config_Dialog *cfd,
68 E_Config_Dialog_Data *cfdata);
70 EAPI E_Config_Dialog *
71 e_int_config_comp(Evas_Object *parent EINA_UNUSED, const char *params __UNUSED__)
74 E_Config_Dialog_View *v;
76 if (e_config_dialog_find("E", "appearance/comp")) return NULL;
77 v = E_NEW(E_Config_Dialog_View, 1);
79 v->create_cfdata = _create_data;
80 v->free_cfdata = _free_data;
81 v->basic.apply_cfdata = _basic_apply_data;
82 v->basic.create_widgets = _basic_create_widgets;
83 v->advanced.apply_cfdata = _advanced_apply_data;
84 v->advanced.create_widgets = _advanced_create_widgets;
86 cfd = e_config_dialog_new(NULL, _("Composite Settings"),
87 "E", "appearance/comp", "preferences-composite", 0, v, NULL);
88 e_dialog_resizable_set(cfd->dia, 1);
93 _create_data(E_Config_Dialog *cfd EINA_UNUSED)
95 E_Config_Dialog_Data *cfdata;
96 E_Comp_Config *conf = e_comp_config_get();
98 cfdata = E_NEW(E_Config_Dialog_Data, 1);
100 cfdata->engine = conf->engine;
101 if ((cfdata->engine != E_COMP_ENGINE_SW) &&
102 (cfdata->engine != E_COMP_ENGINE_GL))
103 cfdata->engine = E_COMP_ENGINE_SW;
105 cfdata->fast_popups = conf->fast_popups;
106 cfdata->fast_borders = conf->fast_borders;
107 cfdata->fast_overrides = conf->fast_overrides;
108 cfdata->fast_menus = conf->fast_menus;
109 cfdata->fast_objects = conf->fast_objects;
110 cfdata->match.disable_popups = conf->match.disable_popups;
111 cfdata->match.disable_borders = conf->match.disable_borders;
112 cfdata->match.disable_overrides = conf->match.disable_overrides;
113 cfdata->match.disable_menus = conf->match.disable_menus;
114 cfdata->match.disable_objects = conf->match.disable_objects;
115 cfdata->disable_screen_effects = conf->disable_screen_effects;
116 cfdata->enable_advanced_features = conf->enable_advanced_features;
118 cfdata->indirect = conf->indirect;
119 cfdata->texture_from_pixmap = conf->texture_from_pixmap;
120 cfdata->smooth_windows = conf->smooth_windows;
121 cfdata->lock_fps = conf->lock_fps;
122 cfdata->grab = conf->grab;
123 cfdata->vsync = conf->vsync;
124 cfdata->swap_mode = conf->swap_mode;
125 cfdata->shadow_style = eina_stringshare_add(conf->shadow_style);
127 cfdata->keep_unmapped = conf->keep_unmapped;
128 cfdata->max_unmapped_pixels = conf->max_unmapped_pixels;
129 cfdata->max_unmapped_time = conf->max_unmapped_time;
130 cfdata->min_unmapped_time = conf->min_unmapped_time;
131 cfdata->send_flush = conf->send_flush;
132 cfdata->send_dump = conf->send_dump;
133 cfdata->nocomp_fs = conf->nocomp_fs;
134 cfdata->nofade = conf->nofade;
136 cfdata->fps_show = conf->fps_show;
137 cfdata->fps_corner = conf->fps_corner;
138 cfdata->fps_average_range = conf->fps_average_range;
140 if (cfdata->fps_average_range < 1) cfdata->fps_average_range = 12;
141 else if (cfdata->fps_average_range > 120)
142 cfdata->fps_average_range = 120;
143 cfdata->first_draw_delay = conf->first_draw_delay;
149 _advanced_features_changed(E_Comp_Config *conf)
151 conf->enable_advanced_features = !conf->enable_advanced_features;
152 if (conf->enable_advanced_features)
153 e_util_dialog_internal(_("WARNING"),
154 _("This option WILL break your desktop if you don't know what you're doing.<br>"
155 "Do not file bugs about anything that occurs with this option enabled.<br>"
156 "You have been warned."));
160 _free_data(E_Config_Dialog *cfd __UNUSED__,
161 E_Config_Dialog_Data *cfdata)
163 eina_stringshare_del(cfdata->shadow_style);
168 _advanced_comp_style_toggle(void *oi, Evas_Object *o)
170 e_widget_disabled_set(oi, e_widget_check_checked_get(o));
174 _advanced_matches_edit(void *data, void *d EINA_UNUSED)
176 E_Config_Dialog *cfd = data;
178 e_int_config_comp_match(cfd->dia->win, NULL);
182 _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
184 Evas_Object *ob,*ol, *of, *otb, *oi, *orec0;
187 e_dialog_resizable_set(cfd->dia, 1);
188 orec0 = evas_object_rectangle_add(evas);
189 evas_object_name_set(orec0, "style_shadows");
191 otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
193 ///////////////////////////////////////////
194 ol = e_widget_list_add(evas, 0, 0);
196 ob = e_widget_button_add(evas, _("Edit window matches"), NULL, _advanced_matches_edit, cfd, NULL);
197 e_widget_list_object_append(ol, ob, 0, 0, 0.5);
199 of = e_widget_frametable_add(evas, _("Select default style"), 0);
200 e_widget_frametable_content_align_set(of, 0.5, 0.5);
201 cfdata->styles_il = oi = e_comp_style_selector_create(evas, &(cfdata->shadow_style));
202 e_widget_frametable_object_append(of, oi, 0, 0, 1, 1, 1, 1, 1, 1);
203 e_widget_list_object_append(ol, of, 1, 1, 0.5);
205 e_widget_toolbook_page_append(otb, NULL, _("Styles"), ol, 1, 1, 1, 1, 0.5, 0.0);
207 //////////////////////////////////////////////
209 ol = e_widget_list_add(evas, 0, 0);
211 Evas_Object *w, *m, *p, *o1, *o2;
213 of = e_widget_framelist_add(evas, _("Fast Effects"), 0);
214 w = ob = e_widget_check_add(evas, _("Enable fast composite effects for windows"), &(cfdata->fast_borders));
215 e_widget_disabled_set(ob, cfdata->match.disable_borders);
216 e_widget_framelist_object_append(of, ob);
217 m = ob = e_widget_check_add(evas, _("Enable fast composite effects for menus"), &(cfdata->fast_menus));
218 e_widget_disabled_set(ob, cfdata->match.disable_menus);
219 e_widget_framelist_object_append(of, ob);
220 p = ob = e_widget_check_add(evas, _("Enable fast composite effects for popups"), &(cfdata->fast_popups));
221 e_widget_disabled_set(ob, cfdata->match.disable_popups);
222 e_widget_framelist_object_append(of, ob);
223 o1 = ob = e_widget_check_add(evas, _("Enable fast composite effects for objects"), &(cfdata->fast_objects));
224 e_widget_disabled_set(ob, cfdata->match.disable_objects);
225 e_widget_framelist_object_append(of, ob);
226 o2 = ob = e_widget_check_add(evas, _("Enable fast composite effects for overrides"), &(cfdata->fast_overrides));
227 e_widget_disabled_set(ob, cfdata->match.disable_overrides);
228 e_widget_framelist_object_append(of, ob);
229 e_widget_list_object_append(ol, of, 1, 0, 0.5);
231 of = e_widget_framelist_add(evas, _("Disable Effects"), 0);
232 ob = e_widget_check_add(evas, _("Disable composite effects for windows"), &(cfdata->match.disable_borders));
233 e_widget_on_change_hook_set(ob, _advanced_comp_style_toggle, w);
234 e_widget_framelist_object_append(of, ob);
235 ob = e_widget_check_add(evas, _("Disable composite effects for menus"), &(cfdata->match.disable_menus));
236 e_widget_on_change_hook_set(ob, _advanced_comp_style_toggle, m);
237 e_widget_framelist_object_append(of, ob);
238 ob = e_widget_check_add(evas, _("Disable composite effects for popups"), &(cfdata->match.disable_popups));
239 e_widget_on_change_hook_set(ob, _advanced_comp_style_toggle, p);
240 e_widget_framelist_object_append(of, ob);
241 ob = e_widget_check_add(evas, _("Disable composite effects for objects"), &(cfdata->match.disable_objects));
242 e_widget_on_change_hook_set(ob, _advanced_comp_style_toggle, o1);
243 e_widget_framelist_object_append(of, ob);
244 ob = e_widget_check_add(evas, _("Disable composite effects for overrides"), &(cfdata->match.disable_overrides));
245 e_widget_on_change_hook_set(ob, _advanced_comp_style_toggle, o2);
246 e_widget_framelist_object_append(of, ob);
247 ob = e_widget_check_add(evas, _("Disable composite effects for screen"), &(cfdata->disable_screen_effects));
248 e_widget_framelist_object_append(of, ob);
249 e_widget_list_object_append(ol, of, 1, 0, 0.5);
252 e_widget_toolbook_page_append(otb, NULL, _("Effects"), ol, 1, 1, 1, 1, 0.5, 0.0);
254 ///////////////////////////////////////////
255 ol = e_widget_list_add(evas, 0, 0);
256 of = e_widget_framelist_add(evas, _("Behavior"), 0);
257 ob = e_widget_check_add(evas, _("Smooth scaling"), &(cfdata->smooth_windows));
258 e_widget_framelist_object_append(of, ob);
259 ob = e_widget_check_add(evas, _("Don't composite fullscreen windows"), &(cfdata->nocomp_fs));
260 e_widget_framelist_object_append(of, ob);
261 ob = e_widget_check_add(evas, _("Don't fade backlight"), &(cfdata->nofade));
262 e_widget_framelist_object_append(of, ob);
263 e_widget_list_object_append(ol, of, 1, 1, 0.5);
265 of = e_widget_framelist_add(evas, _("Engine"), 0);
266 rg = e_widget_radio_group_new(&(cfdata->engine));
267 ob = e_widget_radio_add(evas, _("Software"), E_COMP_ENGINE_SW, rg);
268 e_widget_framelist_object_append(of, ob);
269 if (!getenv("ECORE_X_NO_XLIB"))
271 if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11))
273 ob = e_widget_radio_add(evas, _("OpenGL"), E_COMP_ENGINE_GL, rg);
274 e_widget_framelist_object_append(of, ob);
276 ob = e_widget_label_add(evas, _("OpenGL options:"));
277 e_widget_framelist_object_append(of, ob);
278 ob = e_widget_check_add(evas, _("Tear-free updates (VSynced)"), &(cfdata->vsync));
279 e_widget_framelist_object_append(of, ob);
280 ob = e_widget_check_add(evas, _("Texture from pixmap"), &(cfdata->texture_from_pixmap));
281 e_widget_framelist_object_append(of, ob);
282 ob = e_widget_label_add(evas, _("Assume swapping method:"));
283 e_widget_framelist_object_append(of, ob);
284 rg = e_widget_radio_group_new(&(cfdata->swap_mode));
285 ob = e_widget_radio_add(evas, _("Auto"), ECORE_EVAS_GL_X11_SWAP_MODE_AUTO, rg);
286 e_widget_framelist_object_append(of, ob);
287 ob = e_widget_radio_add(evas, _("Invalidate (full redraw)"), ECORE_EVAS_GL_X11_SWAP_MODE_FULL, rg);
288 e_widget_framelist_object_append(of, ob);
289 ob = e_widget_radio_add(evas, _("Copy from back to front"), ECORE_EVAS_GL_X11_SWAP_MODE_COPY, rg);
290 e_widget_framelist_object_append(of, ob);
291 ob = e_widget_radio_add(evas, _("Double buffered swaps"), ECORE_EVAS_GL_X11_SWAP_MODE_DOUBLE, rg);
292 e_widget_framelist_object_append(of, ob);
293 ob = e_widget_radio_add(evas, _("Triple buffered swaps"), ECORE_EVAS_GL_X11_SWAP_MODE_TRIPLE, rg);
294 e_widget_framelist_object_append(of, ob);
295 // lets not offer this anymore
296 // ob = e_widget_check_add(evas, _("Indirect OpenGL (EXPERIMENTAL)"), &(cfdata->indirect));
297 // e_widget_framelist_object_append(of, ob);
300 e_widget_list_object_append(ol, of, 1, 1, 0.5);
301 e_widget_toolbook_page_append(otb, NULL, _("Rendering"), ol, 0, 0, 0, 0, 0.5, 0.0);
303 ///////////////////////////////////////////
304 ol = e_widget_list_add(evas, 0, 0);
305 of = e_widget_framelist_add(evas, _("X Messages"), 0);
306 ob = e_widget_check_add(evas, _("Send flush"), &(cfdata->send_flush));
307 e_widget_framelist_object_append(of, ob);
308 ob = e_widget_check_add(evas, _("Send dump"), &(cfdata->send_dump));
309 e_widget_framelist_object_append(of, ob);
310 e_widget_list_object_append(ol, of, 1, 1, 0.5);
313 ob = e_widget_check_add(evas, _("Keep hidden windows"), &(cfdata->keep_unmapped));
314 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
315 of = e_widget_frametable_add(evas, _("Maximum hidden pixels"), 0);
316 e_widget_frametable_content_align_set(of, 0.5, 0.5);
317 rg = e_widget_radio_group_new(&(cfdata->max_unmapped_pixels));
318 ob = e_widget_radio_add(evas, _("1M"), 1 * 1024, rg);
319 e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 0, 0);
320 ob = e_widget_radio_add(evas, _("2M"), 2 * 1024, rg);
321 e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 0, 0);
322 ob = e_widget_radio_add(evas, _("4M"), 4 * 1024, rg);
323 e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 1, 1, 0, 0);
324 ob = e_widget_radio_add(evas, _("8M"), 8 * 1024, rg);
325 e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 0, 0);
326 ob = e_widget_radio_add(evas, _("16M"), 16 * 1024, rg);
327 e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 0, 0);
328 ob = e_widget_radio_add(evas, _("32M"), 32 * 1024, rg);
329 e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 0, 0);
330 ob = e_widget_radio_add(evas, _("64M"), 64 * 1024, rg);
331 e_widget_frametable_object_append(of, ob, 2, 0, 1, 1, 1, 1, 0, 0);
332 ob = e_widget_radio_add(evas, _("128M"), 128 * 1024, rg);
333 e_widget_frametable_object_append(of, ob, 2, 1, 1, 1, 1, 1, 0, 0);
334 ob = e_widget_radio_add(evas, _("256M"), 256 * 1024, rg);
335 e_widget_frametable_object_append(of, ob, 2, 2, 1, 1, 1, 1, 0, 0);
336 e_widget_list_object_append(ol, of, 1, 1, 0.5);
338 of = e_widget_framelist_add(evas, _("Sync"), 0);
339 ob = e_widget_check_add(evas, _("Grab Server during draw"), &(cfdata->grab));
340 e_widget_framelist_object_append(of, ob);
341 ob = e_widget_label_add(evas, _("Initial draw timeout for newly mapped windows"));
342 e_widget_framelist_object_append(of, ob);
343 ob = e_widget_slider_add(evas, 1, 0, _("%1.2f Seconds"), 0.01, 0.5, 0.01, 0, &(cfdata->first_draw_delay), NULL, 150);
344 e_widget_framelist_object_append(of, ob);
345 e_widget_list_object_append(ol, of, 1, 1, 0.5);
346 of = e_widget_framelist_add(evas, _("DANGEROUS"), 0);
347 ob = e_widget_check_add(evas, _("Enable advanced compositing features"), &(cfdata->enable_advanced_features));
348 e_widget_framelist_object_append(of, ob);
349 e_widget_list_object_append(ol, of, 1, 1, 0.5);
350 e_widget_toolbook_page_append(otb, NULL, _("Misc"), ol, 0, 0, 0, 0, 0.5, 0.0);
352 ///////////////////////////////////////////
354 ol = e_widget_list_add(evas, 0, 0);
355 ol2 = e_widget_list_add(evas, 1, 1);
356 of = e_widget_framelist_add(evas, _("Min hidden"), 0);
357 e_widget_framelist_content_align_set(of, 0.5, 0.0);
358 rg = e_widget_radio_group_new(&(cfdata->min_unmapped_time));
359 ob = e_widget_radio_add(evas, _("30 Seconds"), 30, rg);
360 e_widget_framelist_object_append(of, ob);
361 ob = e_widget_radio_add(evas, _("1 Minute"), 60, rg);
362 e_widget_framelist_object_append(of, ob);
363 ob = e_widget_radio_add(evas, _("5 Minutes"), 5 * 60, rg);
364 e_widget_framelist_object_append(of, ob);
365 ob = e_widget_radio_add(evas, _("30 Minutes"), 30 * 60, rg);
366 e_widget_framelist_object_append(of, ob);
367 ob = e_widget_radio_add(evas, _("2 Hours"), 2 * 3600, rg);
368 e_widget_framelist_object_append(of, ob);
369 ob = e_widget_radio_add(evas, _("10 Hours"), 10 * 3600, rg);
370 e_widget_framelist_object_append(of, ob);
371 ob = e_widget_radio_add(evas, _("Forever"), 0, rg);
372 e_widget_framelist_object_append(of, ob);
373 e_widget_list_object_append(ol2, of, 1, 1, 0.5);
374 of = e_widget_framelist_add(evas, _("Max hidden"), 0);
375 e_widget_framelist_content_align_set(of, 0.5, 0.0);
376 rg = e_widget_radio_group_new(&(cfdata->max_unmapped_time));
377 ob = e_widget_radio_add(evas, _("30 Seconds"), 30, rg);
378 e_widget_framelist_object_append(of, ob);
379 ob = e_widget_radio_add(evas, _("1 Minute"), 60, rg);
380 e_widget_framelist_object_append(of, ob);
381 ob = e_widget_radio_add(evas, _("5 Minutes"), 5 * 60, rg);
382 e_widget_framelist_object_append(of, ob);
383 ob = e_widget_radio_add(evas, _("30 Minutes"), 30 * 60, rg);
384 e_widget_framelist_object_append(of, ob);
385 ob = e_widget_radio_add(evas, _("2 Hours"), 2 * 3600, rg);
386 e_widget_framelist_object_append(of, ob);
387 ob = e_widget_radio_add(evas, _("10 Hours"), 10 * 3600, rg);
388 e_widget_framelist_object_append(of, ob);
389 ob = e_widget_radio_add(evas, _("Forever"), 0, rg);
390 e_widget_framelist_object_append(of, ob);
391 e_widget_list_object_append(ol2, of, 1, 1, 0.5);
392 e_widget_list_object_append(ol, ol2, 1, 1, 0.5);
393 e_widget_toolbook_page_append(otb, NULL, _("Timeouts"), ol, 0, 0, 0, 0, 0.5, 0.0);
395 ///////////////////////////////////////////
396 ol = e_widget_list_add(evas, 0, 0);
398 ob = e_widget_check_add(evas, _("Show Framerate"), &(cfdata->fps_show));
399 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
400 ob = e_widget_label_add(evas, _("Rolling average frame count"));
401 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
402 ob = e_widget_slider_add(evas, 1, 0, _("%1.0f Frames"), 1, 120, 1, 0,
403 NULL, &(cfdata->fps_average_range), 240);
404 e_widget_list_object_append(ol, ob, 1, 1, 0.5);
406 of = e_widget_frametable_add(evas, _("Corner"), 0);
407 e_widget_frametable_content_align_set(of, 0.5, 0.5);
408 rg = e_widget_radio_group_new(&(cfdata->fps_corner));
409 ob = e_widget_radio_icon_add(evas, _("Top Left"), "preferences-position-top-left",
411 e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
412 ob = e_widget_radio_icon_add(evas, _("Top Right"), "preferences-position-top-right",
414 e_widget_frametable_object_append(of, ob, 1, 0, 1, 1, 1, 1, 1, 1);
415 ob = e_widget_radio_icon_add(evas, _("Bottom Left"), "preferences-position-bottom-left",
417 e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 1, 1, 1, 1);
418 ob = e_widget_radio_icon_add(evas, _("Bottom Right"), "preferences-position-bottom-right",
420 e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 1, 1);
421 e_widget_list_object_append(ol, of, 1, 1, 0.5);
423 e_widget_toolbook_page_append(otb, NULL, _("Debug"), ol, 0, 0, 0, 0, 0.5, 0.0);
425 e_widget_toolbook_page_show(otb, 0);
431 _advanced_apply_data(E_Config_Dialog *cfd __UNUSED__,
432 E_Config_Dialog_Data *cfdata)
434 E_Comp_Config *conf = e_comp_config_get();
436 if ((cfdata->lock_fps != conf->lock_fps) ||
437 (cfdata->smooth_windows != conf->smooth_windows) ||
438 (cfdata->grab != conf->grab) ||
439 (cfdata->keep_unmapped != conf->keep_unmapped) ||
440 (cfdata->nocomp_fs != conf->nocomp_fs) ||
441 (cfdata->nofade != conf->nofade) ||
442 (cfdata->shadow_style != conf->shadow_style) ||
443 (cfdata->max_unmapped_pixels != conf->max_unmapped_pixels) ||
444 (cfdata->max_unmapped_time != conf->max_unmapped_time) ||
445 (cfdata->min_unmapped_time != conf->min_unmapped_time) ||
446 (cfdata->send_flush != conf->send_flush) ||
447 (cfdata->send_dump != conf->send_dump) ||
448 (cfdata->fps_show != conf->fps_show) ||
449 (cfdata->fps_corner != conf->fps_corner) ||
450 (cfdata->fps_average_range != conf->fps_average_range) ||
451 (cfdata->first_draw_delay != conf->first_draw_delay) ||
452 (conf->match.disable_popups != cfdata->match.disable_popups) ||
453 (conf->match.disable_borders != cfdata->match.disable_borders) ||
454 (conf->match.disable_overrides != cfdata->match.disable_overrides) ||
455 (conf->match.disable_menus != cfdata->match.disable_menus) ||
456 (conf->match.disable_objects != cfdata->match.disable_objects) ||
457 (conf->disable_screen_effects != cfdata->disable_screen_effects) ||
458 (conf->enable_advanced_features != cfdata->enable_advanced_features) ||
459 (conf->fast_popups != cfdata->fast_popups) ||
460 (conf->fast_borders != cfdata->fast_borders) ||
461 (conf->fast_overrides != cfdata->fast_overrides) ||
462 (conf->fast_menus != cfdata->fast_menus) ||
463 (conf->fast_objects != cfdata->fast_objects)
466 conf->fast_popups = cfdata->fast_popups;
467 conf->fast_borders = cfdata->fast_borders;
468 conf->fast_overrides = cfdata->fast_overrides;
469 conf->fast_menus = cfdata->fast_menus;
470 conf->fast_objects = cfdata->fast_objects;
471 conf->match.disable_popups = cfdata->match.disable_popups;
472 conf->match.disable_borders = cfdata->match.disable_borders;
473 conf->match.disable_overrides = cfdata->match.disable_overrides;
474 conf->match.disable_menus = cfdata->match.disable_menus;
475 conf->match.disable_objects = cfdata->match.disable_objects;
476 conf->disable_screen_effects = cfdata->disable_screen_effects;
477 if (conf->enable_advanced_features != cfdata->enable_advanced_features)
478 _advanced_features_changed(conf);
479 conf->lock_fps = cfdata->lock_fps;
480 conf->smooth_windows = cfdata->smooth_windows;
481 conf->grab = cfdata->grab;
482 conf->keep_unmapped = cfdata->keep_unmapped;
483 conf->nocomp_fs = cfdata->nocomp_fs;
484 conf->nofade = cfdata->nofade;
485 conf->max_unmapped_pixels = cfdata->max_unmapped_pixels;
486 conf->max_unmapped_time = cfdata->max_unmapped_time;
487 conf->min_unmapped_time = cfdata->min_unmapped_time;
488 conf->send_flush = cfdata->send_flush;
489 conf->send_dump = cfdata->send_dump;
490 conf->fps_show = cfdata->fps_show;
491 conf->fps_corner = cfdata->fps_corner;
492 conf->fps_average_range = cfdata->fps_average_range;
493 conf->first_draw_delay = cfdata->first_draw_delay;
494 if (conf->shadow_style)
495 eina_stringshare_del(conf->shadow_style);
496 conf->shadow_style = eina_stringshare_ref(cfdata->shadow_style);
497 e_comp_shadows_reset();
499 if ((cfdata->engine != conf->engine) ||
500 (cfdata->indirect != conf->indirect) ||
501 (cfdata->texture_from_pixmap != conf->texture_from_pixmap) ||
502 (cfdata->vsync != conf->vsync) ||
503 (cfdata->swap_mode != conf->swap_mode))
507 conf->engine = cfdata->engine;
508 conf->indirect = cfdata->indirect;
509 conf->texture_from_pixmap = cfdata->texture_from_pixmap;
510 conf->vsync = cfdata->vsync;
511 conf->swap_mode = cfdata->swap_mode;
513 a = e_action_find("restart");
514 if ((a) && (a->func.go)) a->func.go(NULL, NULL);
516 e_config_save_queue();
521 _basic_comp_style_fast_toggle(void *data, Evas_Object *o EINA_UNUSED)
523 E_Config_Dialog_Data *cfdata = data;
524 cfdata->fast_changed = 1;
528 _basic_comp_style_toggle(void *data, Evas_Object *o)
530 E_Config_Dialog_Data *cfdata = data;
532 e_widget_disabled_set(cfdata->styles_il, e_widget_check_checked_get(o));
533 e_widget_disabled_set(cfdata->fast_ob, e_widget_check_checked_get(o));
534 cfdata->match.toggle_changed = 1;
538 _basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED,
540 E_Config_Dialog_Data *cfdata)
542 Evas_Object *ob,*ol, *of, *otb, *oi, *orec0, *tab;
545 e_dialog_resizable_set(cfd->dia, 1);
546 orec0 = evas_object_rectangle_add(evas);
547 evas_object_name_set(orec0, "style_shadows");
549 tab = e_widget_table_add(evas, 0);
550 otb = e_widget_toolbook_add(evas, 48 * e_scale, 48 * e_scale);
552 ///////////////////////////////////////////
553 ol = e_widget_list_add(evas, 0, 0);
555 ob = e_widget_check_add(evas, _("Don't fade backlight"), &(cfdata->nofade));
556 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
559 (cfdata->fast_menus && cfdata->fast_overrides && cfdata->fast_borders && cfdata->fast_popups && cfdata->fast_objects);
560 cfdata->fast_ob = ob = e_widget_check_add(evas, _("Enable \"fast\" composite effects"), &(cfdata->fast));
561 evas_object_data_set(ob, "cfdata", cfdata);
562 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
563 e_widget_on_change_hook_set(ob, _basic_comp_style_fast_toggle, cfdata);
565 cfdata->match.disable_all =
566 (cfdata->match.disable_menus && cfdata->match.disable_overrides && cfdata->match.disable_borders &&
567 cfdata->match.disable_popups && cfdata->match.disable_objects && cfdata->disable_screen_effects);
568 e_widget_disabled_set(ob, cfdata->match.disable_all);
569 ob = e_widget_check_add(evas, _("Disable composite effects"), &(cfdata->match.disable_all));
570 evas_object_data_set(ob, "cfdata", cfdata);
571 e_widget_list_object_append(ol, ob, 1, 0, 0.5);
573 of = e_widget_frametable_add(evas, _("Select default style"), 0);
574 e_widget_frametable_content_align_set(of, 0.5, 0.5);
575 cfdata->styles_il = oi = e_comp_style_selector_create(evas, &(cfdata->shadow_style));
576 e_widget_frametable_object_append(of, oi, 0, 0, 1, 1, 1, 1, 1, 1);
577 e_widget_list_object_append(ol, of, 1, 1, 0.5);
579 e_widget_on_change_hook_set(ob, _basic_comp_style_toggle, cfdata);
581 e_widget_toolbook_page_append(otb, NULL, _("General"), ol, 1, 1, 1, 1, 0.5, 0.0);
583 ///////////////////////////////////////////
584 ol = e_widget_list_add(evas, 0, 0);
586 of = e_widget_framelist_add(evas, _("Behavior"), 0);
588 ob = e_widget_check_add(evas, _("Tear-free updates (VSynced)"), &(cfdata->vsync));
589 e_widget_framelist_object_append(of, ob);
591 ob = e_widget_check_add(evas, _("Smooth scaling of window content"), &(cfdata->smooth_windows));
592 e_widget_framelist_object_append(of, ob);
594 ob = e_widget_check_add(evas, _("Don't composite fullscreen windows"), &(cfdata->nocomp_fs));
595 e_widget_framelist_object_append(of, ob);
597 e_widget_list_object_append(ol, of, 1, 0, 0.5);
599 of = e_widget_framelist_add(evas, _("Engine"), 0);
600 rg = e_widget_radio_group_new(&(cfdata->engine));
601 ob = e_widget_radio_add(evas, _("Software"), E_COMP_ENGINE_SW, rg);
602 e_widget_framelist_object_append(of, ob);
603 if (!getenv("ECORE_X_NO_XLIB"))
605 if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11))
607 ob = e_widget_radio_add(evas, _("OpenGL"), E_COMP_ENGINE_GL, rg);
608 e_widget_framelist_object_append(of, ob);
611 ob = e_widget_label_add(evas, _("To reset compositor:"));
612 e_widget_framelist_object_append(of, ob);
613 ob = e_widget_label_add(evas, _("Ctrl+Alt+Shift+Home"));
614 e_widget_framelist_object_append(of, ob);
616 e_widget_list_object_append(ol, of, 1, 0, 0.5);
618 e_widget_toolbook_page_append(otb, NULL, _("Rendering"), ol, 0, 0, 0, 0, 0.5, 0.0);
620 e_widget_toolbook_page_show(otb, 0);
623 e_widget_table_object_append(tab, otb, 0, 0, 1, 1, 1, 1, 1, 1);
628 _basic_apply_data(E_Config_Dialog *cfd __UNUSED__,
629 E_Config_Dialog_Data *cfdata)
631 E_Comp_Config *conf = e_comp_config_get();
633 if (cfdata->match.toggle_changed || cfdata->fast_changed ||
634 (cfdata->lock_fps != conf->lock_fps) ||
635 (cfdata->smooth_windows != conf->smooth_windows) ||
636 (cfdata->grab != conf->grab) ||
637 (cfdata->nofade != conf->nofade) ||
638 (cfdata->keep_unmapped != conf->keep_unmapped) ||
639 (cfdata->nocomp_fs != conf->nocomp_fs) ||
640 (cfdata->shadow_style != conf->shadow_style) ||
641 (cfdata->max_unmapped_pixels != conf->max_unmapped_pixels) ||
642 (cfdata->max_unmapped_time != conf->max_unmapped_time) ||
643 (cfdata->min_unmapped_time != conf->min_unmapped_time) ||
644 (cfdata->send_flush != conf->send_flush) ||
645 (cfdata->send_dump != conf->send_dump) ||
646 (cfdata->fps_show != conf->fps_show) ||
647 (cfdata->fps_corner != conf->fps_corner) ||
648 (cfdata->fps_average_range != conf->fps_average_range) ||
649 (cfdata->first_draw_delay != conf->first_draw_delay)
652 if (cfdata->match.toggle_changed)
654 conf->match.disable_popups = cfdata->match.disable_popups = cfdata->match.disable_all;
655 conf->match.disable_borders = cfdata->match.disable_borders = cfdata->match.disable_all;
656 conf->match.disable_overrides = cfdata->match.disable_overrides = cfdata->match.disable_all;
657 conf->match.disable_menus = cfdata->match.disable_menus = cfdata->match.disable_all;
658 conf->match.disable_objects = cfdata->match.disable_objects = cfdata->match.disable_all;
659 conf->disable_screen_effects = cfdata->disable_screen_effects = cfdata->match.disable_all;
661 if (cfdata->fast_changed)
663 conf->fast_borders = cfdata->fast_borders = cfdata->fast;
664 conf->fast_popups = cfdata->fast_popups = cfdata->fast;
665 conf->fast_menus = cfdata->fast_menus = cfdata->fast;
666 conf->fast_objects = cfdata->fast_objects = cfdata->fast;
667 conf->fast_overrides = cfdata->fast_overrides = cfdata->fast;
669 conf->lock_fps = cfdata->lock_fps;
670 conf->smooth_windows = cfdata->smooth_windows;
671 conf->grab = cfdata->grab;
672 conf->nofade = cfdata->nofade;
673 conf->keep_unmapped = cfdata->keep_unmapped;
674 conf->nocomp_fs = cfdata->nocomp_fs;
675 conf->max_unmapped_pixels = cfdata->max_unmapped_pixels;
676 conf->max_unmapped_time = cfdata->max_unmapped_time;
677 conf->min_unmapped_time = cfdata->min_unmapped_time;
678 if (conf->enable_advanced_features != cfdata->enable_advanced_features)
679 _advanced_features_changed(conf);
680 conf->send_flush = cfdata->send_flush;
681 conf->send_dump = cfdata->send_dump;
682 conf->fps_show = cfdata->fps_show;
683 conf->fps_corner = cfdata->fps_corner;
684 conf->fps_average_range = cfdata->fps_average_range;
685 conf->first_draw_delay = cfdata->first_draw_delay;
686 if (conf->shadow_style)
687 eina_stringshare_del(conf->shadow_style);
688 conf->shadow_style = NULL;
689 if (cfdata->shadow_style)
690 conf->shadow_style = eina_stringshare_add(cfdata->shadow_style);
691 e_comp_shadows_reset();
693 if ((cfdata->engine != conf->engine) ||
694 (cfdata->indirect != conf->indirect) ||
695 (cfdata->texture_from_pixmap != conf->texture_from_pixmap) ||
696 (cfdata->vsync != conf->vsync))
700 conf->engine = cfdata->engine;
701 conf->indirect = cfdata->indirect;
702 conf->texture_from_pixmap = cfdata->texture_from_pixmap;
703 conf->vsync = cfdata->vsync;
705 a = e_action_find("restart");
706 if ((a) && (a->func.go)) a->func.go(NULL, NULL);
708 return e_comp_internal_save();