From 818e75fb00d6a10247823fabdeb317ac917538bc Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 1 Sep 2006 15:37:23 +0000 Subject: [PATCH] 1. fix perf dialog - to actually change fps 2. save icon theme config 3. add config for desk flip animation modes etc. etc. 4. desk flip animation!!! 2 main modes. might restructure this a bit tho (separate out on/off from the mode as there may be many more modes later) SVN revision: 25299 --- src/bin/e_border.c | 14 +- src/bin/e_border.h | 4 + src/bin/e_config.c | 11 +- src/bin/e_config.h | 6 +- src/bin/e_desk.c | 451 ++++++++++++++++++++--------- src/bin/e_desk.h | 2 + src/bin/e_int_config_desks.c | 40 ++- src/bin/e_int_config_performance.c | 6 +- 8 files changed, 391 insertions(+), 143 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index e7d905673..0df6aa21d 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -827,7 +827,7 @@ e_border_fx_offset(E_Border *bd, int x, int y) bd->y + bd->fx.y + bd->client_inset.t, bd->client.w, bd->client.h); - _e_border_move_update(bd); + if (bd->moving) _e_border_move_update(bd); } EAPI void @@ -2309,8 +2309,9 @@ e_border_idler_before(void) bl = e_container_border_list_last(con); while ((bd = e_container_border_list_prev(bl))) { - if ((bd->changes.visible) && (bd->visible) && - (!bd->new_client)) + if ((bd->changes.visible) && (bd->visible) && + (!bd->new_client) && (!bd->changes.pos) && + (!bd->changes.size)) { ecore_evas_show(bd->bg_ecore_evas); ecore_x_window_show(bd->win); @@ -2343,6 +2344,13 @@ e_border_idler_before(void) bd->changes.visible = 0; } if (bd->changed) _e_border_eval(bd); + if ((bd->changes.visible) && (bd->visible) && + (!bd->new_client)) + { + ecore_evas_show(bd->bg_ecore_evas); + ecore_x_window_show(bd->win); + bd->changes.visible = 0; + } } e_container_border_list_free(bl); } diff --git a/src/bin/e_border.h b/src/bin/e_border.h index 6878f6a47..1375953c7 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -125,6 +125,10 @@ struct _E_Border struct { int x, y; + struct { + int x, y; + double t; + } start; } fx; struct { diff --git a/src/bin/e_config.c b/src/bin/e_config.c index ad04a0f8b..58e4832a7 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -473,6 +473,12 @@ e_config_init(void) E_CONFIG_VAL(D, T, border_raise_on_focus, INT); E_CONFIG_VAL(D, T, desk_flip_wrap, INT); + E_CONFIG_VAL(D, T, icon_theme, STR); + + E_CONFIG_VAL(D, T, desk_flip_animate_mode, INT); + E_CONFIG_VAL(D, T, desk_flip_animate_interpolation, INT); + E_CONFIG_VAL(D, T, desk_flip_animate_time, DOUBLE); + E_CONFIG_VAL(D, T, wallpaper_import_last_dev, STR); E_CONFIG_VAL(D, T, wallpaper_import_last_path, STR); @@ -1216,7 +1222,10 @@ e_config_init(void) e_config->wallpaper_grad_c2_b = 255; IFCFGEND; - IFCFG(0x0100); + IFCFG(0x0101); + e_config->desk_flip_animate_mode = 1; + e_config->desk_flip_animate_interpolation = 0; + e_config->desk_flip_animate_time = 0.2; IFCFGEND; #if 0 /* example of new config */ diff --git a/src/bin/e_config.h b/src/bin/e_config.h index eaccb27d6..51bfa50b4 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -50,7 +50,7 @@ typedef Eet_Data_Descriptor E_Config_DD; /* increment this whenever a new set of config values are added but the users * config doesn't need top be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 0x0100 +#define E_CONFIG_FILE_GENERATION 0x0101 #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION) #define E_EVAS_ENGINE_DEFAULT 0 @@ -236,6 +236,10 @@ struct _E_Config const char *icon_theme; // GUI + int desk_flip_animate_mode; + int desk_flip_animate_interpolation; + double desk_flip_animate_time; + const char *wallpaper_import_last_dev; // INTERNAL const char *wallpaper_import_last_path; // INTERNAL diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index ace591e88..2978cdf36 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -13,6 +13,13 @@ static void _e_border_event_desk_show_free(void *data, void *ev); static void _e_border_event_desk_deskshow_free(void *data, void *ev); static void _e_border_event_desk_name_change_free(void *data, void *ev); +static void _e_desk_show_begin(E_Desk *desk, int mode, int dx, int dy); +static void _e_desk_show_end(E_Desk *desk); +static int _e_desk_show_animator(void *data); +static void _e_desk_hide_begin(E_Desk *desk, int mode, int dx, int dy); +static void _e_desk_hide_end(E_Desk *desk); +static int _e_desk_hide_animator(void *data); + EAPI int E_EVENT_DESK_SHOW = 0; EAPI int E_EVENT_DESK_DESKSHOW = 0; EAPI int E_EVENT_DESK_NAME_CHANGE = 0; @@ -183,173 +190,75 @@ e_desk_name_update(void) } } -static void _e_desk_show_begin(E_Desk *desk); -static void _e_desk_show_end(E_Desk *desk); -static int _e_desk_show_animator(void *data); - -static void -_e_desk_show_begin(E_Desk *desk) -{ - E_Border_List *bl; - E_Border *bd; - - bl = e_container_border_list_first(desk->zone->container); - while ((bd = e_container_border_list_next(bl))) - { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if ((bd->desk == desk) && (!bd->sticky)) - { - e_border_fx_offset(bd, -desk->zone->w, 0); - e_border_show(bd); - if (bd->want_fullscreen) - { - e_border_fullscreen(bd, e_config->fullscreen_policy); - bd->want_fullscreen = 0; - } - } - else if (bd->moving) - e_border_desk_set(bd, desk); - } - } - e_container_border_list_free(bl); - ecore_animator_add(_e_desk_show_animator, desk); -} - -static void -_e_desk_show_end(E_Desk *desk) -{ - E_Border_List *bl; - E_Border *bd; - - bl = e_container_border_list_first(desk->zone->container); - while ((bd = e_container_border_list_next(bl))) - { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if ((bd->desk == desk) && (!bd->sticky)) - { - e_border_fx_offset(bd, 0, 0); - } - else if (bd->moving) - { - e_border_fx_offset(bd, 0, 0); - e_border_desk_set(bd, desk); - } - } - } - e_container_border_list_free(bl); -} - -static int -_e_desk_show_animator(void *data) -{ - E_Desk *desk; - E_Border_List *bl; - E_Border *bd; - int done = 1; - - desk = data; - bl = e_container_border_list_first(desk->zone->container); - while ((bd = e_container_border_list_next(bl))) - { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) - { - if (bd->moving) - { - } - else if ((bd->desk == desk) || (!bd->sticky)) - { - e_border_fx_offset(bd, bd->fx.x + 20, 0); - if (bd->fx.x < 0) - done = 0; - } - } - } - e_container_border_list_free(bl); - if (done) - { - _e_desk_show_end(desk); - return 0; - } - return 1; -} - -static void -_e_desk_hide_begin(E_Desk *desk) -{ -} - -static void -_e_desk_hide_end(E_Desk *desk) -{ -} - -static int -_e_desk_hide_animator(void *data) -{ -} - EAPI void e_desk_show(E_Desk *desk) { E_Border_List *bl; E_Border *bd; int was_zone = 0; - int x, y; + int x, y, dx = 0, dy = 0; E_Event_Desk_Show *ev; E_OBJECT_CHECK(desk); E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE); if (desk->visible) return; -// _e_desk_show_begin(desk); - for (x = 0; x < desk->zone->desk_x_count; x++) { for (y = 0; y < desk->zone->desk_y_count; y++) { E_Desk *desk2; - desk2 = e_desk_at_xy_get(desk->zone,x, y); - desk2->visible = 0; + desk2 = e_desk_at_xy_get(desk->zone, x, y); + if (desk2->visible) + { + desk2->visible = 0; + dx = desk->x - desk2->x; + dy = desk->y - desk2->y; + if (e_config->desk_flip_animate_mode > 0) + _e_desk_hide_begin(desk2, e_config->desk_flip_animate_mode, dx, dy); + break; + } } } - + desk->zone->desk_x_current = desk->x; desk->zone->desk_y_current = desk->y; desk->visible = 1; - bl = e_container_border_list_first(desk->zone->container); if (desk->zone->bg_object) was_zone = 1; - while ((bd = e_container_border_list_next(bl))) + if (e_config->desk_flip_animate_mode == 0) { - if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) { - if ((bd->desk == desk) || (bd->sticky)) + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) { - e_border_show(bd); - if (bd->want_fullscreen) + if ((bd->desk == desk) || (bd->sticky)) { - e_border_fullscreen(bd, e_config->fullscreen_policy); - bd->want_fullscreen = 0; + e_border_show(bd); + if (bd->want_fullscreen) + { + e_border_fullscreen(bd, e_config->fullscreen_policy); + bd->want_fullscreen = 0; + } + } + else if (bd->moving) + e_border_desk_set(bd, desk); + else + { + if (bd->fullscreen) + bd->want_fullscreen = 1; + e_border_hide(bd, 2); } } - else if (bd->moving) - e_border_desk_set(bd, desk); - else - { - /* We have to remember that this border wants to become - * fullscreen when we go back to this desk. - */ - if (bd->fullscreen) - bd->want_fullscreen = 1; - e_border_hide(bd, 2); - } } + e_container_border_list_free(bl); } - e_container_border_list_free(bl); + if (e_config->desk_flip_animate_mode > 0) + _e_desk_show_begin(desk, e_config->desk_flip_animate_mode, dx, dy); + if (e_config->focus_last_focused_per_desktop) e_desk_last_focused_focus(desk); @@ -362,7 +271,6 @@ e_desk_show(E_Desk *desk) ev->desk = desk; e_object_ref(E_OBJECT(desk)); ecore_event_add(E_EVENT_DESK_SHOW, ev, _e_border_event_desk_show_free, NULL); - } EAPI void @@ -556,6 +464,7 @@ static void _e_desk_free(E_Desk *desk) { if (desk->name) evas_stringshare_del(desk->name); + if (desk->animator) ecore_animator_del(desk->animator); free(desk); } @@ -588,3 +497,277 @@ _e_border_event_desk_name_change_free(void *data, void *event) e_object_unref(E_OBJECT(ev->desk)); free(ev); } + +static void +_e_desk_show_begin(E_Desk *desk, int mode, int dx, int dy) +{ + E_Border_List *bl; + E_Border *bd; + double t; + + t = ecore_time_get(); + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + bd->fx.start.t = t; + bd->fx.start.x = 0; + bd->fx.start.y = 0; + e_border_desk_set(bd, desk); + e_border_show(bd); + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + bd->fx.start.t = t; + if (mode == 1) + { + bd->fx.start.x = bd->zone->w * dx; + bd->fx.start.y = bd->zone->h * dy; + } + else if (mode == 2) + { + int mx, my, bx, by; + double fx, fy, ang, rad, len, lmax; + + mx = bd->zone->x + (bd->zone->w / 2); + my = bd->zone->y + (bd->zone->h / 2); + + bx = bd->x + (bd->w / 2) - mx; + by = bd->y + (bd->h / 2) - my; + if (bx == 0) bx = 1; + if (by == 0) by = 1; + fx = (double)bx / (double)(bd->zone->w / 2); + fy = (double)by / (double)(bd->zone->h / 2); + ang = atan(fy / fx); + if (fx < 0.0) + ang = M_PI + ang; + len = sqrt((bx * bx) + (by * by)); + lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) + + ((bd->zone->h / 2) * (bd->zone->h / 2))); + rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0; + bx = cos(ang) * (lmax - len + rad); + by = sin(ang) * (lmax - len + rad); + bd->fx.start.x = bx; + bd->fx.start.y = by; + } + e_border_fx_offset(bd, bd->fx.start.x, bd->fx.start.y); + e_border_show(bd); + if (bd->want_fullscreen) + { + e_border_fullscreen(bd, e_config->fullscreen_policy); + bd->want_fullscreen = 0; + } + } + } + } + e_container_border_list_free(bl); + if (desk->animator) ecore_animator_del(desk->animator); + desk->animator = ecore_animator_add(_e_desk_show_animator, desk); +} + +static void +_e_desk_show_end(E_Desk *desk) +{ + E_Border_List *bl; + E_Border *bd; + + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + e_border_fx_offset(bd, 0, 0); +// e_border_desk_set(bd, desk); + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + e_border_fx_offset(bd, 0, 0); + } + } + } + e_container_border_list_free(bl); +} + +static int +_e_desk_show_animator(void *data) +{ + E_Desk *desk; + E_Border_List *bl; + E_Border *bd; + double t, dt, spd; + + desk = data; + t = ecore_time_get(); + dt = -1.0; + spd = e_config->desk_flip_animate_time; + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + dt = (t - bd->fx.start.t) / spd; + if (dt > 1.0) dt = 1.0; + dt = 1.0 - dt; + dt *= dt; // decelerate - could be a better hack + e_border_fx_offset(bd, + ((double)bd->fx.start.x * dt), + ((double)bd->fx.start.y * dt)); + } + } + } + e_container_border_list_free(bl); + if (dt <= 0.0) + { + _e_desk_show_end(desk); + desk->animator = NULL; + return 0; + } + return 1; +} + +static void +_e_desk_hide_begin(E_Desk *desk, int mode, int dx, int dy) +{ + E_Border_List *bl; + E_Border *bd; + double t; + + t = ecore_time_get(); + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + bd->fx.start.t = t; + bd->fx.start.x = 0; + bd->fx.start.y = 0; + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + bd->fx.start.t = t; + if (mode == 1) + { + bd->fx.start.x = bd->zone->w * -dx; + bd->fx.start.y = bd->zone->h * -dy; + } + else if (mode == 2) + { + int mx, my, bx, by; + double fx, fy, ang, rad, len, lmax; + + mx = bd->zone->x + (bd->zone->w / 2); + my = bd->zone->y + (bd->zone->h / 2); + + bx = bd->x + (bd->w / 2) - mx; + by = bd->y + (bd->h / 2) - my; + if (bx == 0) bx = 1; + if (by == 0) by = 1; + fx = (double)bx / (double)(bd->zone->w / 2); + fy = (double)by / (double)(bd->zone->h / 2); + ang = atan(fy / fx); + if (fx < 0.0) + ang = M_PI + ang; + len = sqrt((bx * bx) + (by * by)); + lmax = sqrt(((bd->zone->w / 2) * (bd->zone->w / 2)) + + ((bd->zone->h / 2) * (bd->zone->h / 2))); + rad = sqrt((bd->w * bd->w) + (bd->h * bd->h)) / 2.0; + bx = cos(ang) * (lmax - len + rad); + by = sin(ang) * (lmax - len + rad); + bd->fx.start.x = bx; + bd->fx.start.y = by; + } + e_border_fx_offset(bd, 0, 0); + if (bd->want_fullscreen) + { + e_border_fullscreen(bd, e_config->fullscreen_policy); + bd->want_fullscreen = 0; + } + } + } + } + e_container_border_list_free(bl); + if (desk->animator) ecore_animator_del(desk->animator); + desk->animator = ecore_animator_add(_e_desk_hide_animator, desk); +} + +static void +_e_desk_hide_end(E_Desk *desk) +{ + E_Border_List *bl; + E_Border *bd; + + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + e_border_fx_offset(bd, 0, 0); + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + e_border_fx_offset(bd, 0, 0); + if (bd->fullscreen) + bd->want_fullscreen = 1; + e_border_hide(bd, 2); + } + } + } + e_container_border_list_free(bl); +} + +static int +_e_desk_hide_animator(void *data) +{ + E_Desk *desk; + E_Border_List *bl; + E_Border *bd; + double t, dt, spd; + + desk = data; + t = ecore_time_get(); + dt = -1.0; + spd = e_config->desk_flip_animate_time; + bl = e_container_border_list_first(desk->zone->container); + while ((bd = e_container_border_list_next(bl))) + { + if ((bd->desk->zone == desk->zone) && (!bd->iconic)) + { + if (bd->moving) + { + } + else if ((bd->desk == desk) && (!bd->sticky)) + { + dt = (t - bd->fx.start.t) / spd; + if (dt > 1.0) dt = 1.0; +// dt = 1.0 - dt; + dt *= dt; // decelerate - could be a better hack +// dt = 1.0 - dt; + e_border_fx_offset(bd, + ((double)bd->fx.start.x * dt), + ((double)bd->fx.start.y * dt)); + } + } + } + e_container_border_list_free(bl); + if ((dt < 0.0) || (dt >= 1.0)) + { + _e_desk_hide_end(desk); + desk->animator = NULL; + return 0; + } + return 1; +} diff --git a/src/bin/e_desk.h b/src/bin/e_desk.h index b25feacf2..f33adf368 100644 --- a/src/bin/e_desk.h +++ b/src/bin/e_desk.h @@ -25,6 +25,8 @@ struct _E_Desk unsigned int deskshow_toggle : 1; Evas_Object *bg_object; + + Ecore_Animator *animator; }; struct _E_Event_Desk_Show diff --git a/src/bin/e_int_config_desks.c b/src/bin/e_int_config_desks.c index ef408a106..a25b27228 100644 --- a/src/bin/e_int_config_desks.c +++ b/src/bin/e_int_config_desks.c @@ -18,12 +18,16 @@ struct _E_Config_Dialog_Data int x; int y; int edge_flip_basic; + int flip_animate; /*- ADVANCED -*/ int edge_flip_moving; int edge_flip_dragging; double edge_flip_timeout; int flip_wrap; + int flip_mode; + int flip_interp; + double flip_speed; }; /* a nice easy setup function that does the dirty work */ @@ -57,10 +61,14 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->x = e_config->zone_desks_x_count; cfdata->y = e_config->zone_desks_y_count; cfdata->edge_flip_basic = e_config->edge_flip_moving || e_config->edge_flip_dragging; + cfdata->flip_animate = e_config->desk_flip_animate_mode > 0; cfdata->edge_flip_moving = e_config->edge_flip_moving; cfdata->edge_flip_dragging = e_config->edge_flip_dragging; cfdata->edge_flip_timeout = e_config->edge_flip_timeout; cfdata->flip_wrap = e_config->desk_flip_wrap; + cfdata->flip_mode = e_config->desk_flip_animate_mode; + cfdata->flip_interp = e_config->desk_flip_animate_interpolation; + cfdata->flip_speed = e_config->desk_flip_animate_time; } static void * @@ -107,7 +115,13 @@ _basic_apply_data(E_Config_Dialog *cdd, E_Config_Dialog_Data *cfdata) } } } - + + if (cfdata->flip_animate) + { + e_config->desk_flip_animate_mode = 1; + e_config->desk_flip_animate_interpolation = 0; + e_config->desk_flip_animate_time = 0.5; + } e_config->edge_flip_dragging = cfdata->edge_flip_basic; e_config->edge_flip_moving = cfdata->edge_flip_basic; e_zone_update_flip_all(); @@ -139,6 +153,10 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) } } + e_config->desk_flip_animate_mode = cfdata->flip_mode; + e_config->desk_flip_animate_interpolation = cfdata->flip_interp; + e_config->desk_flip_animate_time = cfdata->flip_speed; + e_config->edge_flip_moving = cfdata->edge_flip_moving; e_config->edge_flip_dragging = cfdata->edge_flip_dragging; e_config->edge_flip_timeout = cfdata->edge_flip_timeout; @@ -168,9 +186,11 @@ _basic_create_widgets(E_Config_Dialog *cdd, Evas *evas, E_Config_Dialog_Data *cf e_widget_framelist_object_append(of, ot); e_widget_list_object_append(o, of, 1, 1, 0.5); - of = e_widget_framelist_add(evas, _("Desktop Mouse Flip"), 0); + of = e_widget_framelist_add(evas, _("Desktop Flip"), 0); ob = e_widget_check_add(evas, _("Flip desktops when mouse at screen edge"), &(cfdata->edge_flip_basic)); e_widget_framelist_object_append(of, ob); + ob = e_widget_check_add(evas, _("Animated flip"), &(cfdata->flip_animate)); + e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5); @@ -182,6 +202,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data { /* generate the core widget layout for an advanced dialog */ Evas_Object *o, *ob, *of, *ot; + E_Radio_Group *rg; o = e_widget_list_add(evas, 0, 0); @@ -214,5 +235,20 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data e_widget_list_object_append(o, of, 1, 1, 0.5); + of = e_widget_framelist_add(evas, _("Flip Animation"), 0); + + rg = e_widget_radio_group_new(&(cfdata->flip_mode)); + ob = e_widget_radio_add(evas, _("Off"), 0, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Pane"), 1, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Zoom"), 2, rg); + e_widget_framelist_object_append(of, ob); + + ob = e_widget_slider_add(evas, 1, 0, _("%1.1f sec"), 0.0, 5.0, 0.05, 0, &(cfdata->flip_speed), NULL, 200); + e_widget_framelist_object_append(of, ob); + + e_widget_list_object_append(o, of, 1, 1, 0.5); + return o; } diff --git a/src/bin/e_int_config_performance.c b/src/bin/e_int_config_performance.c index fab6f550f..8c8ef15bf 100644 --- a/src/bin/e_int_config_performance.c +++ b/src/bin/e_int_config_performance.c @@ -73,6 +73,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { if (cfdata->framerate <= 0.0) cfdata->framerate = 1.0; e_config->framerate = cfdata->framerate; + edje_frametime_set(1.0 / e_config->framerate); e_config_save_queue(); return 1; } @@ -87,7 +88,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf of = e_widget_framelist_add(evas, _("General Settings"), 0); ob = e_widget_label_add(evas, _("Framerate")); e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 0.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150); + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 5.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5); @@ -105,6 +106,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) e_config->image_cache = (cfdata->image_cache * 1024); e_config->edje_cache = cfdata->edje_cache; e_config->edje_collection_cache = cfdata->edje_collection_cache; + edje_frametime_set(1.0 / e_config->framerate); e_config_save_queue(); return 1; } @@ -119,7 +121,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data of = e_widget_framelist_add(evas, _("General Settings"), 0); ob = e_widget_label_add(evas, _("Framerate")); e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 0.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150); + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f fps"), 5.0, 200.0, 5.0, 0, &(cfdata->framerate), NULL, 150); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5);