Event loop
This commit is contained in:
parent
d3371da3fc
commit
05eac82d7e
27
main.c
27
main.c
@ -1,6 +1,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/Xutil.h>
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
@ -10,7 +11,31 @@ int main()
|
|||||||
XMapWindow(display, window);
|
XMapWindow(display, window);
|
||||||
XFlush(display);
|
XFlush(display);
|
||||||
|
|
||||||
for(;;) { sleep(1); }
|
Atom WM_DELETE_WINDOW = XInternAtom(display, "WM_DELETE_WINDOW", False);
|
||||||
|
if(!XSetWMProtocols(display, window, &WM_DELETE_WINDOW, 1))
|
||||||
|
{
|
||||||
|
printf("Couldn't register WM_DELETE_WINDOW property \n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int is_open = 1;
|
||||||
|
while(is_open)
|
||||||
|
{
|
||||||
|
XEvent general_event = {};
|
||||||
|
XNextEvent(display, &general_event);
|
||||||
|
|
||||||
|
switch(general_event.type)
|
||||||
|
{
|
||||||
|
case ClientMessage:
|
||||||
|
{
|
||||||
|
XClientMessageEvent *event = (XClientMessageEvent *) &general_event;
|
||||||
|
if((Atom)event->data.l[0] == WM_DELETE_WINDOW) {
|
||||||
|
XDestroyWindow(display, window);
|
||||||
|
is_open = 0;
|
||||||
|
printf("Window destroyed \n");
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user