aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--include/cursor.h2
-rw-r--r--meson.build1
-rw-r--r--project.conf1
-rw-r--r--src/cursor.c59
5 files changed, 2 insertions, 63 deletions
diff --git a/README.md b/README.md
index 74904b1..f23ae4b 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ These are the dependencies needed to build GPU Screen Recorder:
* libglvnd (which provides libgl, libglx and libegl)
* ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter)
-* x11 (libx11, libxcomposite, libxrandr, libxfixes, libxdamage, libxi)
+* x11 (libx11, libxcomposite, libxrandr, libxfixes, libxdamage)
* libpulse
* libva (and libva-drm)
* libdrm
diff --git a/include/cursor.h b/include/cursor.h
index 323d098..1564714 100644
--- a/include/cursor.h
+++ b/include/cursor.h
@@ -8,7 +8,6 @@ typedef struct {
gsr_egl *egl;
Display *display;
int x_fixes_event_base;
- int xi_opcode;
unsigned int texture_id;
vec2i size;
@@ -17,7 +16,6 @@ typedef struct {
bool cursor_image_set;
bool visible;
- bool cursor_moved;
} gsr_cursor;
int gsr_cursor_init(gsr_cursor *self, gsr_egl *egl, Display *display);
diff --git a/meson.build b/meson.build
index 2af39c0..76fd915 100644
--- a/meson.build
+++ b/meson.build
@@ -42,7 +42,6 @@ dep = [
dependency('xrandr'),
dependency('xfixes'),
dependency('xdamage'),
- dependency('xi'),
dependency('libpulse'),
dependency('libswresample'),
dependency('libavfilter'),
diff --git a/project.conf b/project.conf
index b0f776c..52c8af9 100644
--- a/project.conf
+++ b/project.conf
@@ -20,7 +20,6 @@ xcomposite = ">=0.2"
xrandr = ">=1"
xfixes = ">=2"
xdamage = ">=1"
-xi = ">=1"
libpulse = ">=13"
libswresample = ">=3"
libavfilter = ">=5"
diff --git a/src/cursor.c b/src/cursor.c
index b1cc397..3dca0c6 100644
--- a/src/cursor.c
+++ b/src/cursor.c
@@ -6,8 +6,6 @@
#include <assert.h>
#include <X11/extensions/Xfixes.h>
-#include <X11/extensions/XI2.h>
-#include <X11/extensions/XInput2.h>
// TODO: Test cursor visibility with XFixesHideCursor
@@ -72,26 +70,6 @@ static bool gsr_cursor_set_from_x11_cursor_image(gsr_cursor *self, XFixesCursorI
return false;
}
-static bool xinput_is_supported(Display *dpy, int *xi_opcode) {
- *xi_opcode = 0;
- int query_event = 0;
- int query_error = 0;
- if(!XQueryExtension(dpy, "XInputExtension", xi_opcode, &query_event, &query_error)) {
- fprintf(stderr, "gsr error: gsr_cursor_init: X Input extension not available\n");
- return false;
- }
-
- int major = 2;
- int minor = 1;
- int retval = XIQueryVersion(dpy, &major, &minor);
- if (retval != Success) {
- fprintf(stderr, "gsr error: gsr_cursor_init: XInput 2.1 is not supported\n");
- return false;
- }
-
- return true;
-}
-
int gsr_cursor_init(gsr_cursor *self, gsr_egl *egl, Display *display) {
int x_fixes_error_base = 0;
@@ -108,31 +86,11 @@ int gsr_cursor_init(gsr_cursor *self, gsr_egl *egl, Display *display) {
return -1;
}
- if(!xinput_is_supported(self->display, &self->xi_opcode)) {
- gsr_cursor_deinit(self);
- return -1;
- }
-
- unsigned char mask[XIMaskLen(XI_LASTEVENT)];
- memset(mask, 0, sizeof(mask));
- XISetMask(mask, XI_RawMotion);
-
- XIEventMask xi_masks;
- xi_masks.deviceid = XIAllMasterDevices;
- xi_masks.mask_len = sizeof(mask);
- xi_masks.mask = mask;
- if(XISelectEvents(self->display, DefaultRootWindow(self->display), &xi_masks, 1) != Success) {
- fprintf(stderr, "gsr error: gsr_cursor_init: XISelectEvents failed\n");
- gsr_cursor_deinit(self);
- return -1;
- }
-
self->egl->glGenTextures(1, &self->texture_id);
XFixesSelectCursorInput(self->display, DefaultRootWindow(self->display), XFixesDisplayCursorNotifyMask);
gsr_cursor_set_from_x11_cursor_image(self, XFixesGetCursorImage(self->display), &self->visible);
self->cursor_image_set = true;
- self->cursor_moved = true;
return 0;
}
@@ -146,10 +104,8 @@ void gsr_cursor_deinit(gsr_cursor *self) {
self->texture_id = 0;
}
- if(self->display) {
- XISelectEvents(self->display, DefaultRootWindow(self->display), NULL, 0);
+ if(self->display)
XFixesSelectCursorInput(self->display, DefaultRootWindow(self->display), 0);
- }
self->display = NULL;
self->egl = NULL;
@@ -157,14 +113,6 @@ void gsr_cursor_deinit(gsr_cursor *self) {
bool gsr_cursor_on_event(gsr_cursor *self, XEvent *xev) {
bool updated = false;
- XGenericEventCookie *cookie = (XGenericEventCookie*)&xev->xcookie;
- const Bool got_event_data = XGetEventData(self->display, cookie);
- if(got_event_data && cookie->type == GenericEvent && cookie->extension == self->xi_opcode && cookie->evtype == XI_RawMotion) {
- updated = true;
- self->cursor_moved = true;
- }
- if(got_event_data)
- XFreeEventData(self->display, cookie);
if(xev->type == self->x_fixes_event_base + XFixesCursorNotify) {
XFixesCursorNotifyEvent *cursor_notify_event = (XFixesCursorNotifyEvent*)xev;
@@ -183,11 +131,6 @@ bool gsr_cursor_on_event(gsr_cursor *self, XEvent *xev) {
}
void gsr_cursor_tick(gsr_cursor *self, Window relative_to) {
- if(!self->cursor_moved)
- return;
-
- self->cursor_moved = false;
-
Window dummy_window;
int dummy_i;
unsigned int dummy_u;