source/Platform/Unix/UnixEventQueue.cpp: implement a poll method (only log events for now)
This commit is contained in:
parent
5e27f820de
commit
f8188c4358
1 changed files with 40 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue