1
0
Fork 0

source/Platform/Unix/UnixEventQueue.cpp: implement a poll method (only log events for now)

This commit is contained in:
Henrik Hautakoski 2019-12-25 22:40:00 +01:00
parent dd17868b89
commit fa97552e23

View file

@ -1,10 +1,50 @@
#include <Spectre/System/Log.h>
#include "X11EventQueue.h"
#include "X11SharedDisplay.h"
namespace sp {
bool X11EventQueue::poll(Event& event)
{
XEvent xevent;
int num_events;
::Display* disp;
disp = XGetDisplay();
if (disp == NULL) {
return false;
}
num_events = XEventsQueued(disp, QueuedAlready);
for(int i = 0; i < num_events; i++) {
XNextEvent(disp, &xevent);
switch(xevent.type) {
case ResizeRequest:
Log::info("X11: Resize event");
break;
case KeyPress:
case KeyRelease:
Log::info("X11: KeyEvent");
break;
case ButtonPress:
case ButtonRelease:
Log::info("X11: MouseButtonEvent");
break;
case MotionNotify:
// This generates alot of events :)
//Log::info("X11: MouseMotionEvent");
break;
default:
Log::info("Unknown event");
}
}
XReleaseDisplay();
return false;
}