Cache pixmaps for mouse effects to improve performance
This commit is contained in:
@@ -67,8 +67,8 @@ Task *add_task(Window win)
|
||||
|
||||
Task task_template;
|
||||
memset(&task_template, 0, sizeof(task_template));
|
||||
task_template.area.has_mouse_over_effect = TRUE;
|
||||
task_template.area.has_mouse_press_effect = TRUE;
|
||||
task_template.area.has_mouse_over_effect = panel_config.mouse_effects;
|
||||
task_template.area.has_mouse_press_effect = panel_config.mouse_effects;
|
||||
task_template.win = win;
|
||||
task_template.desktop = get_window_desktop(win);
|
||||
task_template.area.panel = &panels[monitor];
|
||||
@@ -96,8 +96,8 @@ Task *add_task(Window win)
|
||||
Taskbar *taskbar = &panels[monitor].taskbar[j];
|
||||
Task *task_instance = calloc(1, sizeof(Task));
|
||||
memcpy(&task_instance->area, &panels[monitor].g_task.area, sizeof(Area));
|
||||
task_instance->area.has_mouse_over_effect = TRUE;
|
||||
task_instance->area.has_mouse_press_effect = TRUE;
|
||||
task_instance->area.has_mouse_over_effect = panel_config.mouse_effects;
|
||||
task_instance->area.has_mouse_press_effect = panel_config.mouse_effects;
|
||||
task_instance->win = task_template.win;
|
||||
task_instance->desktop = task_template.desktop;
|
||||
task_instance->win_x = task_template.win_x;
|
||||
@@ -576,9 +576,10 @@ void set_task_state(Task *task, TaskState state)
|
||||
if (!panel_config.mouse_effects) {
|
||||
task1->area.pix = task1->state_pix[state];
|
||||
if (!task1->area.pix)
|
||||
task1->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&task1->area);
|
||||
panel_refresh = TRUE;
|
||||
} else {
|
||||
task1->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&task1->area);
|
||||
}
|
||||
if (state == TASK_ACTIVE && g_slist_find(urgent_list, task1))
|
||||
del_urgent(task1);
|
||||
@@ -620,7 +621,7 @@ void set_task_redraw(Task *task)
|
||||
task->state_pix[k] = 0;
|
||||
}
|
||||
task->area.pix = 0;
|
||||
task->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&task->area);
|
||||
}
|
||||
|
||||
void blink_urgent(void *arg)
|
||||
|
||||
@@ -323,7 +323,7 @@ void taskbar_default_font_changed()
|
||||
for (GList *c = taskbar->area.children; c; c = c->next) {
|
||||
Task *t = c->data;
|
||||
t->area.resize_needed = TRUE;
|
||||
t->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&t->area);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -429,7 +429,7 @@ void on_change_taskbar(void *obj)
|
||||
taskbar->state_pix[k] = 0;
|
||||
}
|
||||
taskbar->area.pix = 0;
|
||||
taskbar->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&taskbar->area);
|
||||
}
|
||||
|
||||
void set_taskbar_state(Taskbar *taskbar, TaskbarState state)
|
||||
@@ -450,13 +450,13 @@ void set_taskbar_state(Taskbar *taskbar, TaskbarState state)
|
||||
}
|
||||
if (taskbar->area.on_screen) {
|
||||
if (!taskbar->state_pix[state])
|
||||
taskbar->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&taskbar->area);
|
||||
if (taskbarname_enabled) {
|
||||
if (!panel_config.mouse_effects) {
|
||||
if (!taskbar->bar_name.state_pix[state])
|
||||
taskbar->bar_name.area.redraw_needed = TRUE;
|
||||
schedule_redraw(&taskbar->bar_name.area);
|
||||
} else {
|
||||
taskbar->bar_name.area.redraw_needed = TRUE;
|
||||
schedule_redraw(&taskbar->bar_name.area);
|
||||
}
|
||||
}
|
||||
if (taskbar_mode == MULTI_DESKTOP &&
|
||||
|
||||
@@ -59,8 +59,8 @@ void init_taskbarname_panel(void *p)
|
||||
taskbar = &panel->taskbar[j];
|
||||
memcpy(&taskbar->bar_name.area, &panel->g_taskbar.area_name, sizeof(Area));
|
||||
taskbar->bar_name.area.parent = taskbar;
|
||||
taskbar->bar_name.area.has_mouse_over_effect = 1;
|
||||
taskbar->bar_name.area.has_mouse_press_effect = 1;
|
||||
taskbar->bar_name.area.has_mouse_over_effect = panel_config.mouse_effects;
|
||||
taskbar->bar_name.area.has_mouse_press_effect = panel_config.mouse_effects;
|
||||
if (j == server.desktop)
|
||||
taskbar->bar_name.area.bg = panel->g_taskbar.background_name[TASKBAR_ACTIVE];
|
||||
else
|
||||
@@ -106,7 +106,7 @@ void taskbarname_default_font_changed()
|
||||
for (int j = 0; j < panels[i].num_desktops; j++) {
|
||||
Taskbar *taskbar = &panels[i].taskbar[j];
|
||||
taskbar->bar_name.area.resize_needed = TRUE;
|
||||
taskbar->bar_name.area.redraw_needed = TRUE;
|
||||
schedule_redraw(&taskbar->bar_name.area);
|
||||
}
|
||||
}
|
||||
panel_refresh = TRUE;
|
||||
@@ -142,7 +142,7 @@ gboolean resize_taskbarname(void *obj)
|
||||
int name_height, name_width, name_height_ink;
|
||||
int ret = 0;
|
||||
|
||||
taskbar_name->area.redraw_needed = TRUE;
|
||||
schedule_redraw(&taskbar_name->area);
|
||||
get_text_size2(panel_config.taskbarname_font_desc,
|
||||
&name_height_ink,
|
||||
&name_height,
|
||||
|
||||
Reference in New Issue
Block a user