From 72704f787c2912126844f5ee46ca5e0d7fc3fa64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Tue, 2 Feb 2021 23:39:41 +0100 Subject: [PATCH] x11/events: Clean up event name getting Preparation for adding a generic "get event name" getter. Part-of: --- src/x11/events.c | 199 +++++++++++++++++++++++++++++++---------------- 1 file changed, 134 insertions(+), 65 deletions(-) diff --git a/src/x11/events.c b/src/x11/events.c index 9dec73a9b..efc34bfbe 100644 --- a/src/x11/events.c +++ b/src/x11/events.c @@ -359,6 +359,28 @@ alarm_state_to_string (XSyncAlarmState state) } } +static const char * +get_xi2_event_name (XIEvent *input_event) +{ + switch (input_event->evtype) + { + case XI_FocusIn: + return "XI_FocusIn"; + case XI_FocusOut: + return "XI_FocusOut"; + case XI_Enter: + return "XI_Enter"; + case XI_Leave: + return "XI_Leave"; + case XI_BarrierHit: + return "XI_BarrierHit"; + case XI_BarrierLeave: + return "XI_BarrierLeave"; + } + + return NULL; +} + static void meta_spew_xi2_event (MetaX11Display *x11_display, XIEvent *input_event, @@ -370,27 +392,7 @@ meta_spew_xi2_event (MetaX11Display *x11_display, XIEnterEvent *enter_event = (XIEnterEvent *) input_event; - switch (input_event->evtype) - { - case XI_FocusIn: - name = "XI_FocusIn"; - break; - case XI_FocusOut: - name = "XI_FocusOut"; - break; - case XI_Enter: - name = "XI_Enter"; - break; - case XI_Leave: - name = "XI_Leave"; - break; - case XI_BarrierHit: - name = "XI_BarrierHit"; - break; - case XI_BarrierLeave: - name = "XI_BarrierLeave"; - break; - } + name = get_xi2_event_name (input_event); switch (input_event->evtype) { @@ -417,6 +419,105 @@ meta_spew_xi2_event (MetaX11Display *x11_display, *extra_p = extra; } +static const char * +get_core_event_name (XEvent *event) +{ + /* GenericEvent is omitted here, as it's handled separately. */ + switch (event->type) + { + case KeyPress: + return "KeyPress"; + case KeyRelease: + return "KeyRelease"; + case ButtonPress: + return "ButtonPress"; + case ButtonRelease: + return "ButtonRelease"; + case MotionNotify: + return "MotionNotify"; + case EnterNotify: + return "EnterNotify"; + case LeaveNotify: + return "LeaveNotify"; + case FocusIn: + return "FocusIn"; + case FocusOut: + return "FocusOut"; + case KeymapNotify: + return "KeymapNotify"; + case Expose: + return "Expose"; + case GraphicsExpose: + return "GraphicsExpose"; + case NoExpose: + return "NoExpose"; + case VisibilityNotify: + return "VisibilityNotify"; + case CreateNotify: + return "CreateNotify"; + case DestroyNotify: + return "DestroyNotify"; + case UnmapNotify: + return "UnmapNotify"; + case MapNotify: + return "MapNotify"; + case MapRequest: + return "MapRequest"; + case ReparentNotify: + return "ReparentNotify"; + case ConfigureNotify: + return "ConfigureNotify"; + case ConfigureRequest: + return "ConfigureRequest"; + case GravityNotify: + return "GravityNotify"; + case ResizeRequest: + return "ResizeRequest"; + case CirculateNotify: + return "CirculateNotify"; + case CirculateRequest: + return "CirculateRequest"; + case PropertyNotify: + return "PropertyNotify"; + case SelectionClear: + return "SelectionClear"; + case SelectionRequest: + return "SelectionRequest"; + case SelectionNotify: + return "SelectionNotify"; + case ColormapNotify: + return "ColormapNotify"; + case ClientMessage: + return "ClientMessage"; + case MappingNotify: + return "MappingNotify"; + } + + return NULL; +} + +static const char * +get_extension_event_name (MetaX11Display *x11_display, + XEvent *event) +{ + if (META_X11_DISPLAY_HAS_XSYNC (x11_display) && + event->type == (x11_display->xsync_event_base + XSyncAlarmNotify)) + return "XSyncAlarmNotify"; + + if (META_X11_DISPLAY_HAS_SHAPE (x11_display) && + event->type == (x11_display->shape_event_base + ShapeNotify)) + return "ShapeNotify"; + + if (META_X11_DISPLAY_HAS_DAMAGE (x11_display) && + event->type == (x11_display->damage_event_base + XDamageNotify)) + return "XDamageNotify"; + + if (event->type == (x11_display->xfixes_event_base + XFixesSelectionNotify)) + return "XFixesSelectionNotify"; + + return NULL; +} + static void meta_spew_core_event (MetaX11Display *x11_display, XEvent *event, @@ -426,64 +527,60 @@ meta_spew_core_event (MetaX11Display *x11_display, const char *name = NULL; char *extra = NULL; + name = get_core_event_name (event); + + if (!name) + name = get_extension_event_name (x11_display, event); + switch (event->type) { case KeymapNotify: - name = "KeymapNotify"; - break; case Expose: - name = "Expose"; - break; case GraphicsExpose: - name = "GraphicsExpose"; - break; case NoExpose: - name = "NoExpose"; - break; case VisibilityNotify: - name = "VisibilityNotify"; + case GravityNotify: + case CirculateNotify: + case CirculateRequest: + case SelectionClear: + case SelectionRequest: + case SelectionNotify: + case ColormapNotify: break; case CreateNotify: - name = "CreateNotify"; extra = g_strdup_printf ("parent: 0x%lx window: 0x%lx", event->xcreatewindow.parent, event->xcreatewindow.window); break; case DestroyNotify: - name = "DestroyNotify"; extra = g_strdup_printf ("event: 0x%lx window: 0x%lx", event->xdestroywindow.event, event->xdestroywindow.window); break; case UnmapNotify: - name = "UnmapNotify"; extra = g_strdup_printf ("event: 0x%lx window: 0x%lx from_configure: %d", event->xunmap.event, event->xunmap.window, event->xunmap.from_configure); break; case MapNotify: - name = "MapNotify"; extra = g_strdup_printf ("event: 0x%lx window: 0x%lx override_redirect: %d", event->xmap.event, event->xmap.window, event->xmap.override_redirect); break; case MapRequest: - name = "MapRequest"; extra = g_strdup_printf ("window: 0x%lx parent: 0x%lx\n", event->xmaprequest.window, event->xmaprequest.parent); break; case ReparentNotify: - name = "ReparentNotify"; extra = g_strdup_printf ("window: 0x%lx parent: 0x%lx event: 0x%lx\n", event->xreparent.window, event->xreparent.parent, event->xreparent.event); break; case ConfigureNotify: - name = "ConfigureNotify"; extra = g_strdup_printf ("x: %d y: %d w: %d h: %d above: 0x%lx override_redirect: %d", event->xconfigure.x, event->xconfigure.y, @@ -493,7 +590,6 @@ meta_spew_core_event (MetaX11Display *x11_display, event->xconfigure.override_redirect); break; case ConfigureRequest: - name = "ConfigureRequest"; extra = g_strdup_printf ("parent: 0x%lx window: 0x%lx x: %d %sy: %d %sw: %d %sh: %d %sborder: %d %sabove: %lx %sstackmode: %s %s", event->xconfigurerequest.parent, event->xconfigurerequest.window, @@ -519,28 +615,16 @@ meta_spew_core_event (MetaX11Display *x11_display, event->xconfigurerequest.value_mask & CWStackMode ? "" : "(unset)"); break; - case GravityNotify: - name = "GravityNotify"; - break; case ResizeRequest: - name = "ResizeRequest"; extra = g_strdup_printf ("width = %d height = %d", event->xresizerequest.width, event->xresizerequest.height); break; - case CirculateNotify: - name = "CirculateNotify"; - break; - case CirculateRequest: - name = "CirculateRequest"; - break; case PropertyNotify: { char *str; const char *state; - name = "PropertyNotify"; - meta_x11_error_trap_push (x11_display); str = XGetAtomName (x11_display->xdisplay, event->xproperty.atom); @@ -559,22 +643,9 @@ meta_spew_core_event (MetaX11Display *x11_display, meta_XFree (str); } break; - case SelectionClear: - name = "SelectionClear"; - break; - case SelectionRequest: - name = "SelectionRequest"; - break; - case SelectionNotify: - name = "SelectionNotify"; - break; - case ColormapNotify: - name = "ColormapNotify"; - break; case ClientMessage: { char *str; - name = "ClientMessage"; meta_x11_error_trap_push (x11_display); str = XGetAtomName (x11_display->xdisplay, event->xclient.message_type); @@ -586,7 +657,6 @@ meta_spew_core_event (MetaX11Display *x11_display, } break; case MappingNotify: - name = "MappingNotify"; break; default: if (META_X11_DISPLAY_HAS_XSYNC (x11_display) && @@ -594,7 +664,6 @@ meta_spew_core_event (MetaX11Display *x11_display, { XSyncAlarmNotifyEvent *aevent = (XSyncAlarmNotifyEvent*) event; - name = "XSyncAlarmNotify"; extra = g_strdup_printf ("alarm: 0x%lx" " counter_value: %" G_GINT64_FORMAT