Merge pull request #545 from tsipinakis/bugfix/x11-opt
Draw event optimizations
This commit is contained in:
commit
740ebdd5a3
15
src/dunst.c
15
src/dunst.c
@ -51,20 +51,17 @@ static gboolean run(void *data)
|
||||
|
||||
static gint64 next_timeout = 0;
|
||||
|
||||
if (!x_win_visible(win) && queues_length_displayed() > 0) {
|
||||
bool active = queues_length_displayed() > 0;
|
||||
|
||||
if (active) {
|
||||
// Call draw before showing the window to avoid flickering
|
||||
draw();
|
||||
x_win_show(win);
|
||||
}
|
||||
|
||||
if (x_win_visible(win) && queues_length_displayed() == 0) {
|
||||
} else {
|
||||
x_win_hide(win);
|
||||
}
|
||||
|
||||
if (x_win_visible(win)) {
|
||||
draw();
|
||||
}
|
||||
|
||||
if (x_win_visible(win)) {
|
||||
if (active) {
|
||||
gint64 now = time_monotonic_now();
|
||||
gint64 sleep = queues_get_next_datachange(now);
|
||||
gint64 timeout_at = now + sleep;
|
||||
|
18
src/x11/x.c
18
src/x11/x.c
@ -326,22 +326,16 @@ gboolean x_mainloop_fd_dispatch(GSource *source, GSourceFunc callback, gpointer
|
||||
wake_up();
|
||||
}
|
||||
break;
|
||||
case FocusIn:
|
||||
LOG_D("XEvent: processing 'FocusIn'");
|
||||
wake_up();
|
||||
break;
|
||||
case FocusOut:
|
||||
LOG_D("XEvent: processing 'FocusOut'");
|
||||
wake_up();
|
||||
break;
|
||||
case CreateNotify:
|
||||
LOG_D("XEvent: processing 'CreateNotify'");
|
||||
if (win->visible &&
|
||||
ev.xcreatewindow.override_redirect == 0)
|
||||
XRaiseWindow(xctx.dpy, win->xwin);
|
||||
break;
|
||||
case FocusIn:
|
||||
case FocusOut:
|
||||
case PropertyNotify:
|
||||
LOG_D("XEvent: processing 'PropertyNotify'");
|
||||
LOG_D("XEvent: Checking for active sceen changes");
|
||||
fullscreen_now = have_fullscreen_window();
|
||||
scr = get_active_screen();
|
||||
|
||||
@ -669,9 +663,8 @@ void x_win_destroy(struct window_x11 *win)
|
||||
void x_win_show(struct window_x11 *win)
|
||||
{
|
||||
/* window is already mapped or there's nothing to show */
|
||||
if (win->visible || queues_length_displayed() == 0) {
|
||||
if (win->visible)
|
||||
return;
|
||||
}
|
||||
|
||||
x_shortcut_grab(&settings.close_ks);
|
||||
x_shortcut_grab(&settings.close_all_ks);
|
||||
@ -701,6 +694,9 @@ void x_win_show(struct window_x11 *win)
|
||||
*/
|
||||
void x_win_hide(struct window_x11 *win)
|
||||
{
|
||||
if (!win->visible)
|
||||
return;
|
||||
|
||||
x_shortcut_ungrab(&settings.close_ks);
|
||||
x_shortcut_ungrab(&settings.close_all_ks);
|
||||
x_shortcut_ungrab(&settings.context_ks);
|
||||
|
Loading…
x
Reference in New Issue
Block a user