mirror of
https://github.com/FelixKratz/SketchyBar
synced 2024-11-10 13:54:16 +00:00
decouple update_freq of alias and scripts; introduces alias.update_freq
This commit is contained in:
parent
8ecc46acbe
commit
edcc10f4b7
4 changed files with 35 additions and 13 deletions
18
src/alias.c
18
src/alias.c
|
@ -79,6 +79,8 @@ void alias_init(struct alias* alias) {
|
|||
alias->owner = NULL;
|
||||
alias->color_override = false;
|
||||
alias->color = rgba_color_from_hex(0xffff0000);
|
||||
alias->update_frequency = 1;
|
||||
alias->counter = 0;
|
||||
|
||||
window_init(&alias->window);
|
||||
image_init(&alias->image);
|
||||
|
@ -183,6 +185,19 @@ bool alias_update_image(struct alias* alias) {
|
|||
return image_set_image(&alias->image, image_ref, alias->window.frame, false);
|
||||
}
|
||||
|
||||
bool alias_update(struct alias* alias) {
|
||||
if (alias->update_frequency == 0) return false;
|
||||
|
||||
alias->counter++;
|
||||
if (alias->counter >= alias->update_frequency) {
|
||||
alias->counter = 0;
|
||||
if (alias_update_image(alias)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void alias_draw(struct alias* alias, CGContextRef context) {
|
||||
if (alias->color_override) {
|
||||
CGContextSaveGState(context);
|
||||
|
@ -232,6 +247,9 @@ bool alias_parse_sub_domain(struct alias* alias, FILE* rsp, struct token propert
|
|||
alias->color = rgba_color_from_hex(token_to_uint32t(get_token(&message)));
|
||||
alias->color_override = true;
|
||||
return true;
|
||||
} else if (token_equals(property, PROPERTY_UPDATE_FREQ)) {
|
||||
alias->update_frequency = token_to_uint32t(get_token(&message));
|
||||
return false;
|
||||
} else {
|
||||
respond(rsp, "[!] Alias: Invalid property '%s' \n", property.text);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
struct alias {
|
||||
bool permission;
|
||||
uint32_t update_frequency;
|
||||
uint32_t counter;
|
||||
|
||||
char* name;
|
||||
char* owner;
|
||||
|
@ -29,6 +31,7 @@ uint32_t alias_get_height(struct alias* alias);
|
|||
|
||||
void alias_calculate_bounds(struct alias* alias, uint32_t x, uint32_t y);
|
||||
void alias_draw(struct alias* alias, CGContextRef context);
|
||||
bool alias_update(struct alias* alias);
|
||||
void alias_destroy(struct alias* alias);
|
||||
|
||||
void print_all_menu_items(FILE* rsp);
|
||||
|
|
|
@ -157,12 +157,6 @@ bool bar_item_update(struct bar_item* bar_item, char* sender, bool forced, struc
|
|||
mach_send_message(bar_item->event_port, message, len, false);
|
||||
free(message);
|
||||
}
|
||||
|
||||
// Alias Update
|
||||
if (bar_item->has_alias && alias_update_image(&bar_item->alias)) {
|
||||
bar_item_needs_update(bar_item);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -359,9 +353,7 @@ bool bar_item_set_type(struct bar_item* bar_item, char* type) {
|
|||
string_copy("0") );
|
||||
}
|
||||
else if (bar_item->type == BAR_COMPONENT_ALIAS) {
|
||||
bar_item->update_frequency = 1;
|
||||
bar_item->has_alias = true;
|
||||
bar_item->updates_only_when_shown = true;
|
||||
}
|
||||
else if (bar_item->type == BAR_COMPONENT_GRAPH) {
|
||||
bar_item->has_graph = true;
|
||||
|
@ -473,7 +465,11 @@ struct window* bar_item_get_window(struct bar_item* bar_item, uint32_t adid) {
|
|||
window_set_blur_radius(bar_item->windows[adid - 1], bar_item->blur_radius);
|
||||
context_set_font_smoothing(bar_item->windows[adid - 1]->context,
|
||||
g_bar_manager.font_smoothing );
|
||||
g_bar_manager.needs_ordering = true;
|
||||
|
||||
if (bar_item->parent)
|
||||
bar_item->parent->popup.needs_ordering = true;
|
||||
else
|
||||
g_bar_manager.needs_ordering = true;
|
||||
}
|
||||
|
||||
return bar_item->windows[adid - 1];
|
||||
|
|
|
@ -502,10 +502,15 @@ void bar_manager_update(struct bar_manager* bar_manager, bool forced) {
|
|||
if ((bar_manager->frozen && !forced) || bar_manager->sleeps) return;
|
||||
bool needs_refresh = false;
|
||||
for (int i = 0; i < bar_manager->bar_item_count; i++) {
|
||||
needs_refresh |= bar_item_update(bar_manager->bar_items[i],
|
||||
NULL,
|
||||
forced,
|
||||
NULL );
|
||||
struct bar_item* bar_item = bar_manager->bar_items[i];
|
||||
needs_refresh |= bar_item_update(bar_item, NULL, forced, NULL);
|
||||
|
||||
if (bar_item->has_alias
|
||||
&& bar_item_is_shown(bar_item)
|
||||
&& alias_update(&bar_item->alias)) {
|
||||
bar_item_needs_update(bar_item);
|
||||
needs_refresh = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (needs_refresh) bar_manager_refresh(bar_manager, false);
|
||||
|
|
Loading…
Reference in a new issue