module/river: don’t refresh the bar unless there are any actual changes

This commit is contained in:
Daniel Eklöf 2021-07-01 17:14:47 +02:00
parent 7c6874d826
commit 8f7ef7c20b
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -190,14 +190,15 @@ focused_tags(void *data, struct zriver_output_status_v1 *zriver_output_status_v1
uint32_t tags) uint32_t tags)
{ {
struct output *output = data; struct output *output = data;
struct module *mod = output->m->mod;
if (output->focused == tags)
return;
LOG_DBG("output: %s: focused tags: 0x%08x", output->name, tags); LOG_DBG("output: %s: focused tags: 0x%08x", output->name, tags);
struct module *mod = output->m->mod;
mtx_lock(&mod->lock); mtx_lock(&mod->lock);
{
output->focused = tags; output->focused = tags;
}
mtx_unlock(&mod->lock); mtx_unlock(&mod->lock);
mod->bar->refresh(mod->bar); mod->bar->refresh(mod->bar);
} }
@ -316,8 +317,6 @@ focused_output(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
struct private *m = seat->m; struct private *m = seat->m;
struct module *mod = m->mod; struct module *mod = m->mod;
mtx_lock(&mod->lock);
{
struct output *output = NULL; struct output *output = NULL;
tll_foreach(m->outputs, it) { tll_foreach(m->outputs, it) {
if (it->item.wl_output == wl_output) { if (it->item.wl_output == wl_output) {
@ -331,11 +330,13 @@ focused_output(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
if (output == NULL) if (output == NULL)
LOG_WARN("seat: %s: couldn't find output we are mapped on", seat->name); LOG_WARN("seat: %s: couldn't find output we are mapped on", seat->name);
if (seat->output != output) {
mtx_lock(&mod->lock);
seat->output = output; seat->output = output;
}
mtx_unlock(&mod->lock); mtx_unlock(&mod->lock);
mod->bar->refresh(mod->bar); mod->bar->refresh(mod->bar);
} }
}
static void static void
unfocused_output(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1, unfocused_output(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
@ -373,6 +374,12 @@ focused_view(void *data, struct zriver_seat_status_v1 *zriver_seat_status_v1,
struct seat *seat = data; struct seat *seat = data;
struct module *mod = seat->m->mod; struct module *mod = seat->m->mod;
if (seat->title == NULL && title == NULL)
return;
if (seat->title != NULL && title != NULL && strcmp(seat->title, title) == 0)
return;
LOG_DBG("seat: %s: focused view: %s", seat->name, title); LOG_DBG("seat: %s: focused view: %s", seat->name, title);
mtx_lock(&mod->lock); mtx_lock(&mod->lock);