awesome/event.h
Uli Schlachter 06f02f6004 Delay client frame window destruction (#1148)
Daniel sees a short flicker of his wallpaper when he closes a client.
This happens because the window is destroyed immediately, but other
clients are re-arranged only shortly later. In the mean time, the X
server updates the display and repaints the root window (= wallpaper
becomes visible).

Work around this by delaying the destruction of frame windows to the end
of the current main loop iteration. This means that we first update the
position of all other windows and later destroy the window that was
actually closed.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-10-07 00:46:57 +02:00

63 lines
1.6 KiB
C

/*
* event.h - event handlers header
*
* Copyright © 2007-2009 Julien Danjou <julien@danjou.info>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#ifndef AWESOME_EVENT_H
#define AWESOME_EVENT_H
#include "banning.h"
#include "globalconf.h"
#include "stack.h"
#include <xcb/xcb.h>
/* luaa.c */
void luaA_emit_refresh(void);
/* objects/drawin.c */
void drawin_refresh(void);
/* objects/client.c */
void client_refresh(void);
void client_focus_refresh(void);
void client_destroy_later(void);
/* objects/screen.c */
void screen_refresh(void);
static inline int
awesome_refresh(void)
{
screen_refresh();
luaA_emit_refresh();
drawin_refresh();
client_refresh();
banning_refresh();
stack_refresh();
client_destroy_later();
return xcb_flush(globalconf.connection);
}
void event_init(void);
void event_handle(xcb_generic_event_t *);
void event_drawable_under_mouse(lua_State *, int);
#endif
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80