fix mapping from XInput to the X button mask in the bug #831336 patch
This commit is contained in:
parent
3de3137d55
commit
91c35b83f5
40
freeglut-2.8.0-btnmask.patch
Normal file
40
freeglut-2.8.0-btnmask.patch
Normal file
@ -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);
|
@ -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@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@redhat.com> - 2.8.0-6
|
||||
- fix #831336: fix broken menus; patch backported from upstream SVN revision
|
||||
1375 by Manfred Spraul
|
||||
|
Loading…
Reference in New Issue
Block a user