diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 804821c0a..a2a83192a 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -45,6 +45,7 @@ static int _e_border_cb_window_move_resize_request(void *data, int ev_type, void static int _e_border_cb_desktop_change(void *data, int ev_type, void *ev); static int _e_border_cb_sync_alarm(void *data, int ev_type, void *ev); static int _e_border_cb_util_desktop_list_change(void *data, int ev_type, void *ev); +static int _e_border_cb_config_icon_theme(void *data, int ev_type, void *ev); static int _e_border_cb_pointer_warp(void *data, int ev_type, void *ev); static void _e_border_cb_signal_bind(void *data, Evas_Object *obj, const char *emission, const char *source); @@ -170,6 +171,7 @@ e_border_init(void) handlers = evas_list_append(handlers, ecore_event_handler_add(E_EVENT_POINTER_WARP, _e_border_cb_pointer_warp, NULL)); handlers = evas_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_UTIL_DESKTOP_LIST_CHANGE, _e_border_cb_util_desktop_list_change, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(E_EVENT_CONFIG_ICON_THEME, _e_border_cb_config_icon_theme, NULL)); E_EVENT_BORDER_ADD = ecore_event_type_new(); E_EVENT_BORDER_REMOVE = ecore_event_type_new(); @@ -4292,6 +4294,23 @@ _e_border_cb_util_desktop_list_change(void *data, int ev_type, void *ev) return 1; } +static int +_e_border_cb_config_icon_theme(void *data, int ev_type, void *ev) +{ + Evas_List *l; + + /* mark all borders for desktop/icon updates */ + for (l = borders; l; l = l->next) + { + E_Border *bd; + + bd = l->data; + bd->changes.icon = 1; + bd->changed = 1; + } + return 1; +} + /* FIXME: * Using '2' is bad, may change in zone flip code. * Calculate pos from e->x and e->y diff --git a/src/bin/e_config.c b/src/bin/e_config.c index e9ab392dc..ac6814d6d 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -41,10 +41,14 @@ static E_Config_DD *_e_config_gadcon_client_edd = NULL; static E_Config_DD *_e_config_shelf_edd = NULL; static E_Config_DD *_e_config_mime_icon_edd = NULL; +EAPI int E_EVENT_CONFIG_ICON_THEME = 0; + /* externally accessible functions */ EAPI int e_config_init(void) { + E_EVENT_CONFIG_ICON_THEME = ecore_event_type_new(); + _e_config_profile = getenv("E_CONF_PROFILE"); if (!_e_config_profile) { @@ -542,6 +546,8 @@ e_config_init(void) E_CONFIG_LIST(D, T, mime_icons, _e_config_mime_icon_edd); /**/ E_CONFIG_VAL(D, T, desk_auto_switch, INT); + + E_CONFIG_VAL(D, T, thumb_nice, INT); e_config = e_config_domain_load("e", _e_config_edd); if (e_config) @@ -1362,6 +1368,10 @@ e_config_init(void) e_config->clientlist_max_caption_len = 0; IFCFGEND; + IFCFG(0x114) + e_config->thumb_nice = 0; + IFCFGEND; + e_config->config_version = E_CONFIG_FILE_VERSION; #if 0 /* example of new config */ diff --git a/src/bin/e_config.h b/src/bin/e_config.h index f36d1283f..3205b47a1 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -39,6 +39,8 @@ typedef struct _E_Config_Gadcon_Client E_Config_Gadcon_Client; typedef struct _E_Config_Shelf E_Config_Shelf; typedef struct _E_Config_Mime_Icon E_Config_Mime_Icon; +typedef struct _E_Event_Config_Icon_Theme E_Event_Config_Icon_Theme; + typedef Eet_Data_Descriptor E_Config_DD; #else @@ -52,7 +54,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 to be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 0x0113 +#define E_CONFIG_FILE_GENERATION 0x0114 #define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION) #define E_EVAS_ENGINE_DEFAULT 0 @@ -288,6 +290,8 @@ struct _E_Config Evas_List *mime_icons; // GUI int desk_auto_switch; // GUI; + + int thumb_nice; }; struct _E_Config_Module @@ -405,6 +409,11 @@ struct _E_Config_Mime_Icon const char *icon; }; +struct _E_Event_Config_Icon_Theme +{ + const char *icon_theme; +}; + EAPI int e_config_init(void); EAPI int e_config_shutdown(void); @@ -436,5 +445,7 @@ EAPI E_Config_Binding_Wheel *e_config_binding_wheel_match(E_Config_Binding_Whee extern EAPI E_Config *e_config; +extern EAPI int E_EVENT_CONFIG_ICON_THEME; + #endif #endif diff --git a/src/bin/e_int_config_icon_themes.c b/src/bin/e_int_config_icon_themes.c index afed997b9..9a7964e95 100644 --- a/src/bin/e_int_config_icon_themes.c +++ b/src/bin/e_int_config_icon_themes.c @@ -99,16 +99,18 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - E_Action *a; + E_Event_Config_Icon_Theme *ev; /* Actually take our cfdata settings and apply them in real life */ e_config->icon_theme = evas_stringshare_add(cfdata->themename); e_config_save_queue(); - /* If it's good enough for themes, it's good enough for icon themes, but ICK!. */ - a = e_action_find("restart"); - if ((a) && (a->func.go)) a->func.go(NULL, NULL); - + ev = E_NEW(E_Event_Config_Icon_Theme, 1); + if (ev) + { + ev->icon_theme = e_config->icon_theme; + ecore_event_add(E_EVENT_CONFIG_ICON_THEME, ev, NULL, NULL); + } return 1; /* Apply was OK */ } diff --git a/src/bin/e_thumb.c b/src/bin/e_thumb.c index a553dcd7f..7bd910fd7 100644 --- a/src/bin/e_thumb.c +++ b/src/bin/e_thumb.c @@ -134,7 +134,8 @@ e_thumb_icon_begin(Evas_Object *obj) { Ecore_Exe *exe; - snprintf(buf, sizeof(buf), "%s/enlightenment_thumb", e_prefix_bin_get()); + snprintf(buf, sizeof(buf), "%s/enlightenment_thumb --nice=%d", e_prefix_bin_get(), + e_config->thumb_nice); exe = ecore_exe_run(buf, NULL); _thumbnailers_exe = evas_list_append(_thumbnailers_exe, exe); } diff --git a/src/bin/e_thumb_main.c b/src/bin/e_thumb_main.c index 14ccd7bc3..3a40d0680 100644 --- a/src/bin/e_thumb_main.c +++ b/src/bin/e_thumb_main.c @@ -44,13 +44,12 @@ static char _thumbdir[4096] = ""; int main(int argc, char **argv) { -// char buf[4096]; int i; -/* FIXME: make this configurable */ -// nice(20); for (i = 1; i < argc; i++) { + printf("arg: %d - '%s'\n", strlen(argv[i]), argv[i]); + printf("hm: %d\n", (!strncmp(argv[i], "--nice=", 7))); if ((!strcmp(argv[i], "-h")) || (!strcmp(argv[i], "-help")) || (!strcmp(argv[i], "--help"))) @@ -61,6 +60,14 @@ main(int argc, char **argv) ); exit(0); } + else if (!strncmp(argv[i], "--nice=", 7)) + { + const char *val; + + val = argv[i] + 7; + if (*val) + nice(atoi(val)); + } } ecore_init(); @@ -359,7 +366,6 @@ _e_thumb_generate(E_Thumb *eth) ecore_ipc_server_send(_e_ipc_server, 5, 2, eth->objid, 0, 0, buf, strlen(buf) + 1); } -/* FIXME: should use md5 or sha1 sum of the path */ static char * _e_thumb_file_id(char *file, char *key) {