[freeglut] fix mapping from XInput to the X button mask in the bug #831336 patch
Tomas Smetana
tsmetana at fedoraproject.org
Tue Aug 28 14:13:03 UTC 2012
commit 91c35b83f5b7ff83c7a609314dcd07cbb8b772f0
Author: Tomas Smetana <tsmetana at fedoraproject.org>
Date: Tue Aug 28 16:12:35 2012 +0200
fix mapping from XInput to the X button mask in the bug #831336 patch
freeglut-2.8.0-btnmask.patch | 40 ++++++++++++++++++++++++++++++++++++++++
freeglut.spec | 7 ++++++-
2 files changed, 46 insertions(+), 1 deletions(-)
---
diff --git a/freeglut-2.8.0-btnmask.patch b/freeglut-2.8.0-btnmask.patch
new file mode 100644
index 0000000..0b150d4
--- /dev/null
+++ b/freeglut-2.8.0-btnmask.patch
@@ -0,0 +1,40 @@
+diff -up freeglut-2.8.0/src/freeglut_xinput.c.btnmask freeglut-2.8.0/src/freeglut_xinput.c
+--- freeglut-2.8.0/src/freeglut_xinput.c.btnmask 2012-08-27 15:55:07.841482330 +0200
++++ freeglut-2.8.0/src/freeglut_xinput.c 2012-08-27 15:57:12.423604612 +0200
+@@ -13,6 +13,9 @@
+ #include <X11/Xlib.h>
+ #include <X11/extensions/XInput2.h>
+
++/* convert the XInput button state mask to the regular X mouse event button mask */
++#define BUTTON_MASK(xistate) ((xistate) << 8)
++
+ /* import function from freeglut_main.c */
+ int fghGetXModifiers( int state );
+
+@@ -188,7 +191,7 @@ void fgHandleExtensionEvents( XEvent* ba
+ std_ev.xcrossing.detail = evcross->detail;
+ std_ev.xcrossing.same_screen = evcross->same_screen;
+ std_ev.xcrossing.focus = evcross->focus;
+- std_ev.xcrossing.state = *(unsigned int*)evcross->buttons.mask;
++ std_ev.xcrossing.state = BUTTON_MASK(*(unsigned int*)evcross->buttons.mask);
+
+ XPutBackEvent(fgDisplay.Display, &std_ev);
+ break;
+@@ -213,7 +216,7 @@ void fgHandleExtensionEvents( XEvent* ba
+ std_ev.xbutton.y = event->event_y;
+ std_ev.xbutton.x_root = event->root_x;
+ std_ev.xbutton.y_root = event->root_y;
+- std_ev.xbutton.state = *(unsigned int*)event->buttons.mask;
++ std_ev.xbutton.state = BUTTON_MASK(*(unsigned int*)event->buttons.mask);
+ std_ev.xbutton.button = event->detail;
+
+ XPutBackEvent(fgDisplay.Display, &std_ev);
+@@ -245,7 +248,7 @@ void fgHandleExtensionEvents( XEvent* ba
+ std_ev.xmotion.y = event->event_y;
+ std_ev.xmotion.x_root = event->root_x;
+ std_ev.xmotion.y_root = event->root_y;
+- std_ev.xmotion.state = *(unsigned int*)event->buttons.mask;
++ std_ev.xmotion.state = BUTTON_MASK(*(unsigned int*)event->buttons.mask);
+ std_ev.xmotion.is_hint = NotifyNormal;
+
+ XPutBackEvent(fgDisplay.Display, &std_ev);
diff --git a/freeglut.spec b/freeglut.spec
index 56fad5e..38f339d 100644
--- a/freeglut.spec
+++ b/freeglut.spec
@@ -1,7 +1,7 @@
Summary: A freely licensed alternative to the GLUT library
Name: freeglut
Version: 2.8.0
-Release: 6%{?dist}
+Release: 7%{?dist}
URL: http://freeglut.sourceforge.net
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
# For the manpages
@@ -25,6 +25,7 @@ Patch0: freeglut-2.8.0-fixld.patch
# Fix for conflicting types found in GLext
Patch1: freeglut-glextconflict.patch
Patch2: freeglut-2.8.0-fixXInput.patch
+Patch3: freeglut-2.8.0-btnmask.patch
%description
freeglut is a completely open source alternative to the OpenGL Utility Toolkit
@@ -58,6 +59,7 @@ license.
%patch0 -p1 -b .fixld
%patch1 -p1 -b .fix-glext
%patch2 -p1 -b .fixXInput
+%patch3 -p1 -b .btnmask
%build
# --disable-warnings -> don't add -Werror to CFLAGS
@@ -91,6 +93,9 @@ install -p -m 644 doc/man/*.3 $RPM_BUILD_ROOT/%{_mandir}/man3
%changelog
+* Mon Aug 27 2012 Tomas Smetana <tsmetana at redhat.com> - 2.8.0-7
+- fix mapping from XInput to the X button mask in the bug #831336 patch
+
* Wed Aug 15 2012 Tomas Smetana <tsmetana at redhat.com> - 2.8.0-6
- fix #831336: fix broken menus; patch backported from upstream SVN revision
1375 by Manfred Spraul
More information about the scm-commits
mailing list