aboutsummaryrefslogtreecommitdiff
path: root/src/libdraw/x11-event.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libdraw/x11-event.c')
-rw-r--r--src/libdraw/x11-event.c187
1 files changed, 0 insertions, 187 deletions
diff --git a/src/libdraw/x11-event.c b/src/libdraw/x11-event.c
deleted file mode 100644
index 2d8e9ea4..00000000
--- a/src/libdraw/x11-event.c
+++ /dev/null
@@ -1,187 +0,0 @@
-#include <u.h>
-#include "x11-inc.h"
-#include <libc.h>
-#include <draw.h>
-#include <cursor.h>
-#include <event.h>
-#include <memdraw.h>
-#include "x11-memdraw.h"
-
-/*
- * Should change this to support etimer and estartfn again.
- * The main eread() would prepare a select mask from the keys
- * and then call select() to wait for input. Then it would read an
- * event from the readied fd and return it. Use XCheckWindowEvent
- * to poll the X connection.
- */
-
-ulong
-event(Event *e)
-{
- return eread(~0UL, e);
-}
-
-static void
-eflush(void)
-{
- /* avoid generating a message if there's nothing to show. */
- /* this test isn't perfect, though; could do flushimage(display, 0) then call extract */
- /* also: make sure we don't interfere if we're multiprocessing the display */
- if(display->locking){
- /* if locking is being done by program, this means it can't depend on automatic flush in emouse() etc. */
- if(canqlock(&display->qlock)){
- if(display->bufp > display->buf)
- flushimage(display, 1);
- unlockdisplay(display);
- }
- }else
- if(display->bufp > display->buf)
- flushimage(display, 1);
-}
-
-ulong
-eread(ulong keys, Event *e)
-{
- int r;
- ulong xmask;
- XEvent xevent;
-
- xmask = ExposureMask;
-
- eflush();
-
- if(keys&Emouse)
- xmask |= MouseMask|StructureNotifyMask;
- if(keys&Ekeyboard){
- xmask |= KeyPressMask;
- if((r = _xtoplan9kbd(nil)) >= 0){
- e->kbdc = r;
- return Ekeyboard;
- }
- }
-
- xmask |= EnterWindowMask|LeaveWindowMask;
-
- XSelectInput(_x.display, _x.drawable, xmask);
-again:
- XWindowEvent(_x.display, _x.drawable, xmask, &xevent);
-
- switch(xevent.type){
- case Expose:
- _xexpose(&xevent, _x.display);
- goto again;
- case DestroyNotify:
- if(_xdestroy(&xevent, _x.display))
- postnote(PNGROUP, getpgrp(), "hangup");
- goto again;
- case ConfigureNotify:
- if(_xconfigure(&xevent, _x.display))
- eresized(1);
- goto again;
- case ButtonPress:
- case ButtonRelease:
- case MotionNotify:
- if(_xtoplan9mouse(_x.display, &xevent, &e->mouse) < 0)
- goto again;
- return Emouse;
- case KeyPress:
- e->kbdc = _xtoplan9kbd(&xevent);
- if(e->kbdc == -1)
- goto again;
- return Ekeyboard;
- default:
- goto again;
- }
-}
-
-void
-einit(ulong keys)
-{
- keys &= ~(Emouse|Ekeyboard);
- if(keys){
- fprint(2, "unknown keys in einit\n");
- abort();
- }
-}
-
-int
-ekbd(void)
-{
- Event e;
-
- eread(Ekeyboard, &e);
- return e.kbdc;
-}
-
-Mouse
-emouse(void)
-{
- Event e;
-
- eread(Emouse, &e);
- return e.mouse;
-}
-
-int
-ecanread(ulong keys)
-{
- int can;
-
- can = 0;
- if(keys&Emouse)
- can |= ecanmouse();
- if(keys&Ekeyboard)
- can |= ecankbd();
- return can;
-}
-
-int
-ecanmouse(void)
-{
- XEvent xe;
- Mouse m;
-
- eflush();
-again:
- if(XCheckWindowEvent(_x.display, _x.drawable, MouseMask, &xe)){
- if(_xtoplan9mouse(_x.display, &xe, &m) < 0)
- goto again;
- XPutBackEvent(_x.display, &xe);
- return 1;
- }
- return 0;
-}
-
-int
-ecankbd(void)
-{
- XEvent xe;
- int r;
-
- eflush();
- if((r = _xtoplan9kbd(nil)) >= 0){
- _xtoplan9kbd((XEvent*)-1);
- return 1;
- }
-again:
- if(XCheckWindowEvent(_x.display, _x.drawable, KeyPressMask, &xe)){
- if(_xtoplan9kbd(&xe) == -1)
- goto again;
- XPutBackEvent(_x.display, &xe);
- return 1;
- }
- return 0;
-}
-
-void
-emoveto(Point p)
-{
- _xmoveto(p);
-}
-
-void
-esetcursor(Cursor *c)
-{
- _xsetcursor(c);
-}
-