Taskbar: thumbnails (interleave slow periodic throttling with event processing)
This commit is contained in:
parent
f7d083904f
commit
47201cab84
1 changed files with 13 additions and 1 deletions
|
@ -52,6 +52,7 @@ static timeout *thumbnail_update_timer_active;
|
||||||
static timeout *thumbnail_update_timer_tooltip;
|
static timeout *thumbnail_update_timer_tooltip;
|
||||||
|
|
||||||
static GList *taskbar_task_orderings = NULL;
|
static GList *taskbar_task_orderings = NULL;
|
||||||
|
static GList *taskbar_thumbnail_jobs_done = NULL;
|
||||||
|
|
||||||
void taskbar_init_fonts();
|
void taskbar_init_fonts();
|
||||||
int taskbar_compute_desired_size(void *obj);
|
int taskbar_compute_desired_size(void *obj);
|
||||||
|
@ -91,6 +92,7 @@ void default_taskbar()
|
||||||
thumbnail_update_timer_all = NULL;
|
thumbnail_update_timer_all = NULL;
|
||||||
thumbnail_update_timer_active = NULL;
|
thumbnail_update_timer_active = NULL;
|
||||||
thumbnail_update_timer_tooltip = NULL;
|
thumbnail_update_timer_tooltip = NULL;
|
||||||
|
taskbar_thumbnail_jobs_done = NULL;
|
||||||
taskbar_sort_method = TASKBAR_NOSORT;
|
taskbar_sort_method = TASKBAR_NOSORT;
|
||||||
taskbar_alignment = ALIGN_LEFT;
|
taskbar_alignment = ALIGN_LEFT;
|
||||||
default_taskbarname();
|
default_taskbarname();
|
||||||
|
@ -135,6 +137,7 @@ void cleanup_taskbar()
|
||||||
stop_timeout(thumbnail_update_timer_all);
|
stop_timeout(thumbnail_update_timer_all);
|
||||||
stop_timeout(thumbnail_update_timer_active);
|
stop_timeout(thumbnail_update_timer_active);
|
||||||
stop_timeout(thumbnail_update_timer_tooltip);
|
stop_timeout(thumbnail_update_timer_tooltip);
|
||||||
|
g_list_free(taskbar_thumbnail_jobs_done);
|
||||||
taskbar_save_orderings();
|
taskbar_save_orderings();
|
||||||
if (win_to_task) {
|
if (win_to_task) {
|
||||||
while (g_hash_table_size(win_to_task)) {
|
while (g_hash_table_size(win_to_task)) {
|
||||||
|
@ -826,9 +829,11 @@ void taskbar_update_thumbnails(void *arg)
|
||||||
c;
|
c;
|
||||||
c = c->next) {
|
c = c->next) {
|
||||||
Task *t = (Task *)c->data;
|
Task *t = (Task *)c->data;
|
||||||
if (mode == THUMB_MODE_ALL || (mode == THUMB_MODE_ACTIVE_WINDOW && t->current_state == TASK_ACTIVE) ||
|
if ((mode == THUMB_MODE_ALL && !g_list_find(taskbar_thumbnail_jobs_done, t)) || (mode == THUMB_MODE_ACTIVE_WINDOW && t->current_state == TASK_ACTIVE) ||
|
||||||
(mode == THUMB_MODE_TOOLTIP_WINDOW && g_tooltip.mapped && g_tooltip.area == &t->area)) {
|
(mode == THUMB_MODE_TOOLTIP_WINDOW && g_tooltip.mapped && g_tooltip.area == &t->area)) {
|
||||||
task_refresh_thumbnail(t);
|
task_refresh_thumbnail(t);
|
||||||
|
if (mode == THUMB_MODE_ALL)
|
||||||
|
taskbar_thumbnail_jobs_done = g_list_append(taskbar_thumbnail_jobs_done, t);
|
||||||
if (t->thumbnail && mode == THUMB_MODE_TOOLTIP_WINDOW) {
|
if (t->thumbnail && mode == THUMB_MODE_TOOLTIP_WINDOW) {
|
||||||
taskbar_start_thumbnail_timer(THUMB_MODE_TOOLTIP_WINDOW);
|
taskbar_start_thumbnail_timer(THUMB_MODE_TOOLTIP_WINDOW);
|
||||||
}
|
}
|
||||||
|
@ -843,4 +848,11 @@ void taskbar_update_thumbnails(void *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mode == THUMB_MODE_ALL) {
|
||||||
|
if (taskbar_thumbnail_jobs_done) {
|
||||||
|
g_list_free(taskbar_thumbnail_jobs_done);
|
||||||
|
taskbar_thumbnail_jobs_done = NULL;
|
||||||
|
change_timeout(&thumbnail_update_timer_all, 10 * 1000, 10 * 1000, taskbar_update_thumbnails, arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue