source/Platform/Unix/UnixEventQueue.cpp: implement a poll method (only log events for now)
This commit is contained in:
parent
dd17868b89
commit
fa97552e23
1 changed files with 40 additions and 0 deletions
|
|
@ -1,10 +1,50 @@
|
||||||
|
|
||||||
|
#include <Spectre/System/Log.h>
|
||||||
#include "X11EventQueue.h"
|
#include "X11EventQueue.h"
|
||||||
|
#include "X11SharedDisplay.h"
|
||||||
|
|
||||||
namespace sp {
|
namespace sp {
|
||||||
|
|
||||||
bool X11EventQueue::poll(Event& event)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue