xserver: Branch 'xorg-server-1.2-apple' - 2 commits
Ben Byer
bbyer at kemper.freedesktop.org
Mon Nov 12 17:02:57 PST 2007
hw/darwin/darwinEvents.c | 44 +++++++++++++++++++++++++++++++++++++-------
hw/darwin/darwinKeyboard.c | 2 ++
hw/darwin/quartz/quartz.c | 17 ++++++++++-------
hw/darwin/quartz/quartz.h | 8 ++++++++
4 files changed, 57 insertions(+), 14 deletions(-)
New commits:
commit 3a532addbd820e1f4420f811f27dfd9dd5b079d5
Author: Ben Byer <bbyer at bbyer.apple.com>
Date: Mon Nov 12 16:42:00 2007 -0800
converted some debugging prints to TRACE() statements
diff --git a/hw/darwin/quartz/quartz.c b/hw/darwin/quartz/quartz.c
index 34f5e45..c0666e6 100644
--- a/hw/darwin/quartz/quartz.c
+++ b/hw/darwin/quartz/quartz.c
@@ -253,7 +253,7 @@ static void QuartzUpdateScreens(void)
int x, y, width, height, sx, sy;
xEvent e;
- ErrorF("QuartzUpdateScreens()\n");
+ TRACE("QuartzUpdateScreens()\n");
if (noPseudoramiXExtension || screenInfo.numScreens != 1)
{
/* FIXME: if not using Xinerama, we have multiple screens, and
@@ -421,6 +421,7 @@ void DarwinModeProcessEvent(
{
switch (xe->u.u.type) {
case kXDarwinControllerNotify:
+ TRACE("kXDarwinControllerNotify\n");
AppleWMSendEvent(AppleWMControllerNotify,
AppleWMControllerNotifyMask,
xe->u.clientMessage.u.l.longs0,
@@ -428,6 +429,7 @@ void DarwinModeProcessEvent(
break;
case kXDarwinPasteboardNotify:
+ TRACE("kXDarwinPasteboardNotify\n");
AppleWMSendEvent(AppleWMPasteboardNotify,
AppleWMPasteboardNotifyMask,
xe->u.clientMessage.u.l.longs0,
@@ -435,7 +437,7 @@ void DarwinModeProcessEvent(
break;
case kXDarwinActivate:
- // ErrorF("kXDarwinActivate\n");
+ TRACE("kXDarwinActivate\n");
QuartzShow(xe->u.keyButtonPointer.rootX,
xe->u.keyButtonPointer.rootY);
AppleWMSendEvent(AppleWMActivationNotify,
@@ -444,7 +446,7 @@ void DarwinModeProcessEvent(
break;
case kXDarwinDeactivate:
- // ErrorF("kXDarwinDeactivate\n");
+ TRACE("kXDarwinDeactivate\n");
AppleWMSendEvent(AppleWMActivationNotify,
AppleWMActivationNotifyMask,
AppleWMIsInactive, 0);
@@ -452,22 +454,23 @@ void DarwinModeProcessEvent(
break;
case kXDarwinDisplayChanged:
- // ErrorF("kXDarwinDisplayChanged\n");
+ TRACE("kXDarwinDisplayChanged\n");
QuartzUpdateScreens();
break;
case kXDarwinWindowState:
- // ErrorF("kXDarwinWindowState\n");
+ TRACE("kXDarwinWindowState\n");
RootlessNativeWindowStateChanged(xe->u.clientMessage.u.l.longs0,
xe->u.clientMessage.u.l.longs1);
break;
case kXDarwinWindowMoved:
- // ErrorF("kXDarwinWindowMoved\n");
+ TRACE("kXDarwinWindowMoved\n");
RootlessNativeWindowMoved (xe->u.clientMessage.u.l.longs0);
break;
case kXDarwinToggleFullscreen:
+ TRACE("kXDarwinToggleFullscreen\n");
#ifdef DARWIN_DDX_MISSING
if (quartzEnableRootless) QuartzSetFullscreen(!quartzHasRoot);
else if (quartzHasRoot) QuartzHide();
@@ -503,7 +506,7 @@ void DarwinModeProcessEvent(
break;
case kXDarwinBringAllToFront:
- // ErrorF("kXDarwinBringAllToFront\n");
+ TRACE("kXDarwinBringAllToFront\n");
RootlessOrderAllWindows();
break;
diff --git a/hw/darwin/quartz/quartz.h b/hw/darwin/quartz/quartz.h
index 172f323..febc51a 100644
--- a/hw/darwin/quartz/quartz.h
+++ b/hw/darwin/quartz/quartz.h
@@ -38,6 +38,14 @@
#include "screenint.h"
#include "window.h"
+//#define DEBUG 1
+
+#ifdef DEBUG
+#define TRACE(msg, args...) ErrorF("%s:%d: " msg, __FUNCTION__, __LINE__, ##args )
+#else
+#define TRACE(msg, args...)
+#endif
+
/*------------------------------------------
Quartz display mode function types
------------------------------------------*/
commit 65b4e4733ffe425c19902af035eb7b49642ed034
Author: Ben Byer <bbyer at bbyer.apple.com>
Date: Mon Nov 12 16:41:13 2007 -0800
Fix for stuck modifier keys, attempt 2!
diff --git a/hw/darwin/darwinEvents.c b/hw/darwin/darwinEvents.c
index 6293d6b..c9b30ee 100644
--- a/hw/darwin/darwinEvents.c
+++ b/hw/darwin/darwinEvents.c
@@ -41,7 +41,6 @@ in this Software without prior written authorization from The Open Group.
#include "mi.h"
#include "scrnintstr.h"
#include "mipointer.h"
-
#include "darwin.h"
#include "darwinKeyboard.h"
@@ -72,7 +71,8 @@ typedef struct _EventQueue {
} EventQueueRec, *EventQueuePtr;
static EventQueueRec darwinEventQueue;
-
+extern KeyClassPtr darwinKeyc;
+#define KeyPressed(k) (darwinKeyc->down[k >> 3] & (1 << (k & 7)))
/*
* DarwinPressModifierMask
@@ -150,8 +150,37 @@ static void DarwinUpdateModifiers(
* are held down during a "context" switch -- otherwise, we would miss the KeyUp.
*/
static void DarwinReleaseModifiers(void) {
- xEvent e;
- DarwinUpdateModifiers(&e, KeyRelease, COMMAND_MASK(-1) | CONTROL_MASK(-1) | ALTERNATE_MASK(-1) | SHIFT_MASK(-1));
+ KeySym *map = NULL;
+ xEvent ke;
+ int i = 0, j = 0, nevents = 0;
+
+ map = darwinKeyc->curKeySyms.map;
+
+ for (i = darwinKeyc->curKeySyms.minKeyCode, map = darwinKeyc->curKeySyms.map;
+ i < darwinKeyc->curKeySyms.maxKeyCode;
+ i++, map += darwinKeyc->curKeySyms.mapWidth) {
+ if (KeyPressed(i)) {
+ switch (*map) {
+ /* Don't release the lock keys */
+ case XK_Caps_Lock:
+ case XK_Shift_Lock:
+ case XK_Num_Lock:
+ case XK_Scroll_Lock:
+ case XK_Kana_Lock:
+ break;
+ default:
+ ke.u.keyButtonPointer.time = GetTimeInMillis();
+ ke.u.keyButtonPointer.rootX = 0;
+ ke.u.keyButtonPointer.rootY = 0;
+ ke.u.u.type = KeyRelease;
+ ke.u.u.detail = i;
+ (*darwinEventQueue.pKbd->processInputProc)(&ke,
+ (DeviceIntPtr)darwinEventQueue.pKbd, 1);
+ break;
+ }
+ }
+ }
+ ProcessInputEvents();
}
/*
@@ -477,9 +506,10 @@ void ProcessInputEvents(void)
break;
}
- case kXDarwinDeactivate:
- DarwinReleaseModifiers();
- // fall through
+ case kXDarwinDeactivate:
+ DarwinReleaseModifiers();
+ old_flags=0;
+ // fall through
default:
// Check for mode specific event
DarwinModeProcessEvent(&xe);
diff --git a/hw/darwin/darwinKeyboard.c b/hw/darwin/darwinKeyboard.c
index 2a10496..3685bff 100644
--- a/hw/darwin/darwinKeyboard.c
+++ b/hw/darwin/darwinKeyboard.c
@@ -220,6 +220,7 @@ static void DarwinChangeKeyboardControl( DeviceIntPtr device, KeybdCtrl *ctrl )
static darwinKeyboardInfo keyInfo;
static FILE *fref = NULL;
static char *inBuffer = NULL;
+KeyClassPtr darwinKeyc = NULL;
//-----------------------------------------------------------------------------
// Data Stream Object
@@ -835,6 +836,7 @@ InitModMap(register KeyClassPtr keyc)
CARD8 keysPerModifier[8];
CARD8 mask;
+ darwinKeyc = keyc;
if (keyc->modifierKeyMap != NULL)
xfree (keyc->modifierKeyMap);
More information about the xorg-commit
mailing list