From fa97552e23cab3ef6ee4e520bf00a2234aa6d19c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Dec 2019 22:40:00 +0100 Subject: [PATCH] source/Platform/Unix/UnixEventQueue.cpp: implement a poll method (only log events for now) --- source/Platform/Unix/X11EventQueue.cpp | 40 ++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/source/Platform/Unix/X11EventQueue.cpp b/source/Platform/Unix/X11EventQueue.cpp index d71faaa..0e81cbe 100644 --- a/source/Platform/Unix/X11EventQueue.cpp +++ b/source/Platform/Unix/X11EventQueue.cpp @@ -1,10 +1,50 @@ +#include #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; }