rpms/vnc/devel vnc-allocate.patch, NONE, 1.1 vnc-mieq.patch, NONE, 1.1 vnc-noxkb.patch, NONE, 1.1 vnc-paint.patch, NONE, 1.1 vnc-privates.patch, NONE, 1.1 vnc-selections.patch, NONE, 1.1 .cvsignore, 1.23, 1.24 sources, 1.24, 1.25 vnc-autotools.patch, 1.2, 1.3 vnc-gcc43.patch, 1.1, 1.2 vnc-modular-xorg.patch, 1.12, 1.13 vnc.spec, 1.183, 1.184

Adam Tkac (atkac) fedora-extras-commits at redhat.com
Tue Mar 11 12:51:11 UTC 2008


Author: atkac

Update of /cvs/pkgs/rpms/vnc/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18050

Modified Files:
	.cvsignore sources vnc-autotools.patch vnc-gcc43.patch 
	vnc-modular-xorg.patch vnc.spec 
Added Files:
	vnc-allocate.patch vnc-mieq.patch vnc-noxkb.patch 
	vnc-paint.patch vnc-privates.patch vnc-selections.patch 
Log Message:
- BuildRequires and Requires cleanup
- don't build java viewer (problems due new gcj)
- use xorg codebase from xorg-x11-server-source package again
  - vnc-selection.patch - new xserver selection API/ABI
  - vnc-xkb.patch - disable XKEYBOARD extension
  - vnc-paint.patch - PaintWindow{Background,Border} hooks have been removed
  - vnc-privates.patch - update devPrivates handling
  - vnc-mieq.patch - use event queue to handle input events


vnc-allocate.patch:

--- NEW FILE vnc-allocate.patch ---
diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc.allocate vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc
--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc.allocate	2008-02-25 16:38:37.000000000 +0100
+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc	2008-02-25 16:54:48.000000000 +0100
@@ -536,9 +536,9 @@ static void vfbInstallColormap(ColormapP
     swapcopy32(pXWDHeader->bits_per_rgb, pVisual->bitsPerRGBValue);
     swapcopy32(pXWDHeader->colormap_entries, pVisual->ColormapEntries);
 
-    ppix = (Pixel *)ALLOCATE_LOCAL(entries * sizeof(Pixel));
-    prgb = (xrgb *)ALLOCATE_LOCAL(entries * sizeof(xrgb));
-    defs = (xColorItem *)ALLOCATE_LOCAL(entries * sizeof(xColorItem));
+    ppix = (Pixel *)xalloc(entries * sizeof(Pixel));
+    prgb = (xrgb *)xalloc(entries * sizeof(xrgb));
+    defs = (xColorItem *)xalloc(entries * sizeof(xColorItem));
 
     for (i = 0; i < entries; i++)  ppix[i] = i;
     /* XXX truecolor */
@@ -553,9 +553,9 @@ static void vfbInstallColormap(ColormapP
     }
     (*pmap->pScreen->StoreColors)(pmap, entries, defs);
 
-    DEALLOCATE_LOCAL(ppix);
-    DEALLOCATE_LOCAL(prgb);
-    DEALLOCATE_LOCAL(defs);
+    xfree(ppix);
+    xfree(prgb);
+    xfree(defs);
   }
 }

vnc-mieq.patch:

--- NEW FILE vnc-mieq.patch ---
diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/XserverDesktop.cc.mieq vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/XserverDesktop.cc
--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/XserverDesktop.cc.mieq	2006-05-15 18:56:20.000000000 +0200
+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/XserverDesktop.cc	2008-03-05 12:25:06.000000000 +0100
@@ -50,12 +50,20 @@ extern char *display;
 #include "resource.h"
 #include "cursorstr.h"
 #include "windowstr.h"
+#include "mi/mi.h"
 #define XK_CYRILLIC
 #include "keysym.h"
 #undef public
 #undef class
 }
 
+static xEvent *eventq = NULL;
+static DeviceIntPtr vncKeyboard = NULL;
+static DeviceIntPtr vncMouse = NULL;
+
+static int vfbKeybdProc (DeviceIntPtr pDev, int onoff);
+static int vfbMouseProc (DeviceIntPtr pDev, int onoff);
+
 using namespace rfb;
 using namespace network;
 
@@ -202,6 +210,21 @@ XserverDesktop::XserverDesktop(ScreenPtr
 
   if (httpListener)
     httpServer = new FileHTTPServer(this);
+
+// XXX Memory leak here, eventq is not free()-d because it has to exist till server exits
+  if (!eventq)
+    eventq = (xEvent *) xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+  if (!eventq)
+    FatalError("couldn't allocate room for events\n");
+
+  if (vncMouse == NULL) {
+    vncMouse = AddInputDevice(vfbMouseProc, TRUE);
+    RegisterPointerDevice (vncMouse);
+  }
+  if (vncKeyboard == NULL) {
+    vncKeyboard = AddInputDevice(vfbKeybdProc, TRUE);
+    RegisterKeyboardDevice (vncKeyboard);
+  }
 }
 
 XserverDesktop::~XserverDesktop()
@@ -495,7 +518,7 @@ void XserverDesktop::positionCursor()
 {
   if (!cursorPos.equals(oldCursorPos)) {
     oldCursorPos = cursorPos;
-    (*pScreen->SetCursorPosition) (pScreen, cursorPos.x, cursorPos.y, FALSE);
+//    (*pScreen->SetCursorPosition) (pScreen, cursorPos.x, cursorPos.y, FALSE);
     server->setCursorPos(cursorPos);
     server->tryUpdate();
   }
@@ -660,8 +683,8 @@ void XserverDesktop::approveConnection(v
 
 void XserverDesktop::pointerEvent(const Point& pos, int buttonMask)
 {
-  xEvent ev;
-  DevicePtr dev = LookupPointerDevice();
+  BYTE detail;
+  int i, j, n, valuators[2];
 
   // SetCursorPosition seems to be very expensive (at least on XFree86 3.3.6
   // for S3), so we delay calling it until positionCursor() is called at the
@@ -670,14 +693,14 @@ void XserverDesktop::pointerEvent(const 
 
   NewCurrentScreen(pScreen, pos.x, pos.y);
 
-  ev.u.u.type = MotionNotify;
-  ev.u.u.detail = 0;
-  ev.u.keyButtonPointer.rootX = pos.x;
-  ev.u.keyButtonPointer.rootY = pos.y;
-  ev.u.keyButtonPointer.time = GetTimeInMillis();
-
-  if (!pos.equals(cursorPos))
-    (*dev->processInputProc)(&ev, (DeviceIntPtr)dev, 1);
+  if (!pos.equals(cursorPos)) {
+    valuators[0] = pos.x;
+    valuators[1] = pos.y;
+    n = GetPointerEvents (eventq, vncMouse, MotionNotify, 0,
+                          POINTER_ABSOLUTE, 0, 2, valuators);
+    for (i = 0; i < n; i++)
+      mieqEnqueue (vncMouse, eventq + i);
+  }
 
   for (int i = 0; i < 5; i++) {
     if ((buttonMask ^ oldButtonMask) & (1<<i)) {
@@ -685,12 +708,15 @@ void XserverDesktop::pointerEvent(const 
       // God knows why but some idiot decided to conditionally move the pointer
       // mapping out of DIX, so we guess here that if XINPUT is defined we have
       // to do it ourselves...
-      ev.u.u.detail = ((DeviceIntPtr)dev)->button->map[i + 1];
+      detail = vncMouse->button->map[i + 1];
 #else
-      ev.u.u.detail = i + 1;
+      detail = i + 1;
 #endif
-      ev.u.u.type = (buttonMask & (1<<i)) ? ButtonPress : ButtonRelease;
-      (*dev->processInputProc)(&ev, (DeviceIntPtr)dev, 1);
+      n = GetPointerEvents (eventq, vncMouse, (buttonMask & (1<<i)) ?
+                                      ButtonPress : ButtonRelease,
+                            detail, POINTER_RELATIVE, 0, 0, NULL);
+      for (j = 0; j < n; j++)
+        mieqEnqueue (vncMouse, eventq + j);
     }
   }
 
@@ -771,8 +797,8 @@ void XserverDesktop::lookup(int index, i
 
 class ModifierState {
 public:
-  ModifierState(DeviceIntPtr dev_, int modIndex_)
-    : dev(dev_), modIndex(modIndex_), nKeys(0), keys(0), pressed(false)
+  ModifierState(int modIndex_)
+    : modIndex(modIndex_), nKeys(0), keys(0), pressed(false)
   {
   }
   ~ModifierState() {
@@ -781,7 +807,7 @@ public:
     delete [] keys;
   }
   void press() {
-    KeyClassPtr keyc = dev->key;
+    KeyClassPtr keyc = vncKeyboard->key;
     if (!(keyc->state & (1<<modIndex))) {
       tempKeyEvent(keyc->modifierKeyMap[modIndex * keyc->maxKeysPerModifier],
                    true);
@@ -789,7 +815,7 @@ public:
     }
   }
   void release() {
-    KeyClassPtr keyc = dev->key;
+    KeyClassPtr keyc = vncKeyboard->key;
     if (keyc->state & (1<<modIndex)) {
       for (int k = 0; k < keyc->maxKeysPerModifier; k++) {
         int keycode
@@ -802,20 +828,19 @@ public:
 private:
   void tempKeyEvent(int keycode, bool down) {
     if (keycode) {
-      if (!keys) keys = new int[dev->key->maxKeysPerModifier];
+      if (!keys) keys = new int[vncKeyboard->key->maxKeysPerModifier];
       keys[nKeys++] = keycode;
       generateXKeyEvent(keycode, down);
     }
   }
   void generateXKeyEvent(int keycode, bool down) {
-    xEvent ev;
-    ev.u.u.type = down ? KeyPress : KeyRelease;
-    ev.u.u.detail = keycode;
-    ev.u.keyButtonPointer.time = GetTimeInMillis();
-    (*dev->c_public.processInputProc)(&ev, dev, 1);
+    int i, n;
+    n = GetKeyboardEvents (eventq, vncKeyboard,
+                           down ? KeyPress : KeyRelease, keycode);
+    for (i = 0; i < n; i++)
+      mieqEnqueue (vncKeyboard, eventq + i);
     vlog.debug("fake keycode %d %s", keycode, down ? "down" : "up");
   }
-  DeviceIntPtr dev;
   int modIndex;
   int nKeys;
   int* keys;
@@ -888,16 +913,16 @@ void XserverDesktop::keyEvent(rdr::U32 k
     vlog.debug("Ignoring caps lock");
     return;
   }
-  DeviceIntPtr dev = (DeviceIntPtr)LookupKeyboardDevice();
-  KeyClassPtr keyc = dev->key;
+  KeyClassPtr keyc = vncKeyboard->key;
   KeySymsPtr keymap = &keyc->curKeySyms;
+  int i, j, k, n;
 
   // find which modifier Mode_switch is on.
   int modeSwitchMapIndex = 0;
-  for (int i = 3; i < 8; i++) {
-    for (int k = 0; k < keyc->maxKeysPerModifier; k++) {
+  for (i = 3; i < 8; i++) {
+    for (k = 0; k < keyc->maxKeysPerModifier; k++) {
       int keycode = keyc->modifierKeyMap[i * keyc->maxKeysPerModifier + k];
-      for (int j = 0; j < keymap->mapWidth; j++) {
+      for (j = 0; j < keymap->mapWidth; j++) {
         if (keycode != 0 &&
             keymap->map[(keycode - keymap->minKeyCode)
                         * keymap->mapWidth + j] == XK_Mode_switch)
@@ -926,7 +951,7 @@ void XserverDesktop::keyEvent(rdr::U32 k
   if (kc == 0) {
     // Not a direct match in the local keyboard mapping.  Check for alternative
     // keysyms with the same meaning.
-    for (int i = 0; i < sizeof(altKeysym) / sizeof(altKeysym_t); i++) {
+    for (i = 0; i < sizeof(altKeysym) / sizeof(altKeysym_t); i++) {
       if (keysym == altKeysym[i].a)
         kc = KeysymToKeycode(keymap, altKeysym[i].b, &col);
       else if (keysym == altKeysym[i].b)
@@ -954,16 +979,16 @@ void XserverDesktop::keyEvent(rdr::U32 k
 
   // See if it's a modifier key.  If so, then don't do any auto-repeat, because
   // the X server will translate each press into a release followed by a press.
-  for (int i = 0; i < 8; i++) {
-    for (int k = 0; k < keyc->maxKeysPerModifier; k++) {
+  for (i = 0; i < 8; i++) {
+    for (k = 0; k < keyc->maxKeysPerModifier; k++) {
       if (kc == keyc->modifierKeyMap[i * keyc->maxKeysPerModifier + k] &&
           IS_PRESSED(keyc,kc) && down)
         return;
     }
   }
 
-  ModifierState shift(dev, ShiftMapIndex);
-  ModifierState modeSwitch(dev, modeSwitchMapIndex);
+  ModifierState shift(ShiftMapIndex);
+  ModifierState modeSwitch(modeSwitchMapIndex);
   if (down) {
     if (col & 1)
       shift.press();
@@ -977,11 +1002,10 @@ void XserverDesktop::keyEvent(rdr::U32 k
     }
   }
   vlog.debug("keycode %d %s", kc, down ? "down" : "up");
-  xEvent ev;
-  ev.u.u.type = down ? KeyPress : KeyRelease;
-  ev.u.u.detail = kc;
-  ev.u.keyButtonPointer.time = GetTimeInMillis();
-  (*dev->c_public.processInputProc)(&ev, dev, 1);
+  n = GetKeyboardEvents (eventq, vncKeyboard, down ? KeyPress : KeyRelease,
+                         kc);
+  for (i = 0; i < n; i++)
+    mieqEnqueue (vncKeyboard, eventq + i);
 }
 
 
@@ -1150,3 +1174,208 @@ static KeyCode KeysymToKeycode(KeySymsPt
   }
   return 0;
 }
+
+void vncRingBell(int percent, int pitch, int duration)
+{
+  if (percent > 0)
+    vncBell();
+}
+
+/* Fairly standard US PC Keyboard */
+
+#define VFB_MIN_KEY 8
+#define VFB_MAX_KEY 255
+#define VFB_MAP_LEN (VFB_MAX_KEY - VFB_MIN_KEY + 1)
+#define KEYSYMS_PER_KEY 2
+KeySym keyboardMap[VFB_MAP_LEN * KEYSYMS_PER_KEY] = {
+  NoSymbol, NoSymbol,
+  XK_Escape, NoSymbol,
+  XK_1, XK_exclam,
+  XK_2, XK_at,
+  XK_3, XK_numbersign,
+  XK_4, XK_dollar,
+  XK_5, XK_percent,
+  XK_6, XK_asciicircum,
+  XK_7, XK_ampersand,
+  XK_8, XK_asterisk,
+  XK_9, XK_parenleft,
+  XK_0, XK_parenright,
+  XK_minus, XK_underscore,
+  XK_equal, XK_plus,
+  XK_BackSpace, NoSymbol,
+  XK_Tab, NoSymbol,
+  XK_q, XK_Q,
+  XK_w, XK_W,
+  XK_e, XK_E,
+  XK_r, XK_R,
+  XK_t, XK_T,
+  XK_y, XK_Y,
+  XK_u, XK_U,
+  XK_i, XK_I,
+  XK_o, XK_O,
+  XK_p, XK_P,
+  XK_bracketleft, XK_braceleft,
+  XK_bracketright, XK_braceright,
+  XK_Return, NoSymbol,
+  XK_Control_L, NoSymbol,
+  XK_a, XK_A,
+  XK_s, XK_S,
+  XK_d, XK_D,
+  XK_f, XK_F,
+  XK_g, XK_G,
+  XK_h, XK_H,
+  XK_j, XK_J,
+  XK_k, XK_K,
+  XK_l, XK_L,
+  XK_semicolon, XK_colon,
+  XK_apostrophe, XK_quotedbl,
+  XK_grave, XK_asciitilde,
+  XK_Shift_L, NoSymbol,
+  XK_backslash, XK_bar,
+  XK_z, XK_Z,
+  XK_x, XK_X,
+  XK_c, XK_C,
+  XK_v, XK_V,
+  XK_b, XK_B,
+  XK_n, XK_N,
+  XK_m, XK_M,
+  XK_comma, XK_less,
+  XK_period, XK_greater,
+  XK_slash, XK_question,
+  XK_Shift_R, NoSymbol,
+  XK_KP_Multiply, NoSymbol,
+  XK_Alt_L, XK_Meta_L,
+  XK_space, NoSymbol,
+  /*XK_Caps_Lock*/ NoSymbol, NoSymbol,
+  XK_F1, NoSymbol,
+  XK_F2, NoSymbol,
+  XK_F3, NoSymbol,
+  XK_F4, NoSymbol,
+  XK_F5, NoSymbol,
+  XK_F6, NoSymbol,
+  XK_F7, NoSymbol,
+  XK_F8, NoSymbol,
+  XK_F9, NoSymbol,
+  XK_F10, NoSymbol,
+  XK_Num_Lock, XK_Pointer_EnableKeys,
+  XK_Scroll_Lock, NoSymbol,
+  XK_KP_Home, XK_KP_7,
+  XK_KP_Up, XK_KP_8,
+  XK_KP_Prior, XK_KP_9,
+  XK_KP_Subtract, NoSymbol,
+  XK_KP_Left, XK_KP_4,
+  XK_KP_Begin, XK_KP_5,
+  XK_KP_Right, XK_KP_6,
+  XK_KP_Add, NoSymbol,
+  XK_KP_End, XK_KP_1,
+  XK_KP_Down, XK_KP_2,
+  XK_KP_Next, XK_KP_3,
+  XK_KP_Insert, XK_KP_0,
+  XK_KP_Delete, XK_KP_Decimal,
+  NoSymbol, NoSymbol,
+  NoSymbol, NoSymbol,
+  NoSymbol, NoSymbol,
+  XK_F11, NoSymbol,
+  XK_F12, NoSymbol,
+  XK_Home, NoSymbol,
+  XK_Up, NoSymbol,
+  XK_Prior, NoSymbol,
+  XK_Left, NoSymbol,
+  NoSymbol, NoSymbol,
+  XK_Right, NoSymbol,
+  XK_End, NoSymbol,
+  XK_Down, NoSymbol,
+  XK_Next, NoSymbol,
+  XK_Insert, NoSymbol,
+  XK_Delete, NoSymbol,
+  XK_KP_Enter, NoSymbol,
+  XK_Control_R, NoSymbol,
+  XK_Pause, XK_Break,
+  XK_Print, XK_Execute,
+  XK_KP_Divide, NoSymbol,
+  XK_Alt_R, XK_Meta_R,
+};
+
+static Bool GetMappings(KeySymsPtr pKeySyms, CARD8 *pModMap)
+{
+  int i;
+
+  for (i = 0; i < MAP_LENGTH; i++)
+    pModMap[i] = NoSymbol;
+
+  for (i = 0; i < VFB_MAP_LEN; i++) {
+    if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Caps_Lock)
+      pModMap[i + VFB_MIN_KEY] = LockMask;
+    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_L ||
+             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_R)
+      pModMap[i + VFB_MIN_KEY] = ShiftMask;
+    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_L ||
+             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_R) {
+      pModMap[i + VFB_MIN_KEY] = ControlMask;
+    }
+    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_L ||
+             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_R)
+      pModMap[i + VFB_MIN_KEY] = Mod1Mask;
+  }
+
+  pKeySyms->minKeyCode = VFB_MIN_KEY;
+  pKeySyms->maxKeyCode = VFB_MAX_KEY;
+  pKeySyms->mapWidth = KEYSYMS_PER_KEY;
+  pKeySyms->map = keyboardMap;
+
+  return TRUE;
+}
+
+static int vfbKeybdProc(DeviceIntPtr pDev, int onoff)
+{
+  KeySymsRec            keySyms;
+  CARD8                 modMap[MAP_LENGTH];
+
+  switch (onoff)
+  {
+  case DEVICE_INIT: 
+    GetMappings(&keySyms, modMap);
+    InitKeyboardDeviceStruct(&pDev->c_public, &keySyms, modMap,
+                             (BellProcPtr)vncRingBell, (KbdCtrlProcPtr)NoopDDA);
+    break;
+  case DEVICE_ON: 
+    pDev->c_public.on = TRUE;
+    break;
+  case DEVICE_OFF: 
+    pDev->c_public.on = FALSE;
+    break;
+  case DEVICE_CLOSE:
+    break;
+  }
+  return Success;
+}
+
+static int vfbMouseProc(DeviceIntPtr pDev, int onoff)
+{
+  BYTE map[6];
+
+  switch (onoff)
+  {
+  case DEVICE_INIT:
+    map[1] = 1;
+    map[2] = 2;
+    map[3] = 3;
+    map[4] = 4;
+    map[5] = 5;
+    InitPointerDeviceStruct(&pDev->c_public, map, 5, GetMotionHistory,
+                            (PtrCtrlProcPtr)NoopDDA, GetMotionHistorySize(), 2);
+    break;
+
+  case DEVICE_ON:
+    pDev->c_public.on = TRUE;
+    break;
+
+  case DEVICE_OFF:
+    pDev->c_public.on = FALSE;
+    break;
+
+  case DEVICE_CLOSE:
+    break;
+  }
+  return Success;
+}
diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc.mieq vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc
--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc.mieq	2008-03-04 12:08:05.000000000 +0100
+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/xvnc.cc	2008-03-05 11:52:34.000000000 +0100
@@ -125,6 +125,8 @@ static bool displaySpecified = false;
 static bool wellKnownSocketsCreated = false;
 static char displayNumStr[16];
 
+extern void vncRingBell (int percent, int pitch, int duration);
+
 #define swapcopy16(_dst, _src) \
     if (needswap) { CARD16 _s = _src; cpswaps(_s, _dst); } \
     else _dst = _src;
@@ -925,7 +927,7 @@ void InitOutput(ScreenInfo *screenInfo, 
 int SelectWaitTime = 10000; /* usec */
 #endif
 
-Bool LegalModifier(unsigned int key, DevicePtr pDev)
+Bool LegalModifier(unsigned int key, DeviceIntPtr pDev)
 {
   return TRUE;
 }
@@ -936,223 +938,14 @@ void ProcessInputEvents()
   miPointerUpdate();
 }
 
-/* Fairly standard US PC Keyboard */
-
-#define VFB_MIN_KEY 8
-#define VFB_MAX_KEY 255
-#define VFB_MAP_LEN (VFB_MAX_KEY - VFB_MIN_KEY + 1)
-#define KEYSYMS_PER_KEY 2
-KeySym keyboardMap[VFB_MAP_LEN * KEYSYMS_PER_KEY] = {
-  NoSymbol, NoSymbol,
-  XK_Escape, NoSymbol,
-  XK_1, XK_exclam,
-  XK_2, XK_at,
-  XK_3, XK_numbersign,
-  XK_4, XK_dollar,
-  XK_5, XK_percent,
-  XK_6, XK_asciicircum,
-  XK_7, XK_ampersand,
-  XK_8, XK_asterisk,
-  XK_9, XK_parenleft,
-  XK_0, XK_parenright,
-  XK_minus, XK_underscore,
-  XK_equal, XK_plus,
-  XK_BackSpace, NoSymbol,
-  XK_Tab, NoSymbol,
-  XK_q, XK_Q,
-  XK_w, XK_W,
-  XK_e, XK_E,
-  XK_r, XK_R,
-  XK_t, XK_T,
-  XK_y, XK_Y,
-  XK_u, XK_U,
-  XK_i, XK_I,
-  XK_o, XK_O,
-  XK_p, XK_P,
-  XK_bracketleft, XK_braceleft,
-  XK_bracketright, XK_braceright,
-  XK_Return, NoSymbol,
-  XK_Control_L, NoSymbol,
-  XK_a, XK_A,
-  XK_s, XK_S,
-  XK_d, XK_D,
-  XK_f, XK_F,
-  XK_g, XK_G,
-  XK_h, XK_H,
-  XK_j, XK_J,
-  XK_k, XK_K,
-  XK_l, XK_L,
-  XK_semicolon, XK_colon,
-  XK_apostrophe, XK_quotedbl,
-  XK_grave, XK_asciitilde,
-  XK_Shift_L, NoSymbol,
-  XK_backslash, XK_bar,
-  XK_z, XK_Z,
-  XK_x, XK_X,
-  XK_c, XK_C,
-  XK_v, XK_V,
-  XK_b, XK_B,
-  XK_n, XK_N,
-  XK_m, XK_M,
-  XK_comma, XK_less,
-  XK_period, XK_greater,
-  XK_slash, XK_question,
-  XK_Shift_R, NoSymbol,
-  XK_KP_Multiply, NoSymbol,
-  XK_Alt_L, XK_Meta_L,
-  XK_space, NoSymbol,
-  /*XK_Caps_Lock*/ NoSymbol, NoSymbol,
-  XK_F1, NoSymbol,
-  XK_F2, NoSymbol,
-  XK_F3, NoSymbol,
-  XK_F4, NoSymbol,
-  XK_F5, NoSymbol,
-  XK_F6, NoSymbol,
-  XK_F7, NoSymbol,
-  XK_F8, NoSymbol,
-  XK_F9, NoSymbol,
-  XK_F10, NoSymbol,
-  XK_Num_Lock, XK_Pointer_EnableKeys,
-  XK_Scroll_Lock, NoSymbol,
-  XK_KP_Home, XK_KP_7,
-  XK_KP_Up, XK_KP_8,
-  XK_KP_Prior, XK_KP_9,
-  XK_KP_Subtract, NoSymbol,
-  XK_KP_Left, XK_KP_4,
-  XK_KP_Begin, XK_KP_5,
-  XK_KP_Right, XK_KP_6,
-  XK_KP_Add, NoSymbol,
-  XK_KP_End, XK_KP_1,
-  XK_KP_Down, XK_KP_2,
-  XK_KP_Next, XK_KP_3,
-  XK_KP_Insert, XK_KP_0,
-  XK_KP_Delete, XK_KP_Decimal,
-  NoSymbol, NoSymbol,
-  NoSymbol, NoSymbol,
-  NoSymbol, NoSymbol,
-  XK_F11, NoSymbol,
-  XK_F12, NoSymbol,
-  XK_Home, NoSymbol,
-  XK_Up, NoSymbol,
-  XK_Prior, NoSymbol,
-  XK_Left, NoSymbol,
-  NoSymbol, NoSymbol,
-  XK_Right, NoSymbol,
-  XK_End, NoSymbol,
-  XK_Down, NoSymbol,
-  XK_Next, NoSymbol,
-  XK_Insert, NoSymbol,
-  XK_Delete, NoSymbol,
-  XK_KP_Enter, NoSymbol,
-  XK_Control_R, NoSymbol,
-  XK_Pause, XK_Break,
-  XK_Print, XK_Execute,
-  XK_KP_Divide, NoSymbol,
-  XK_Alt_R, XK_Meta_R,
-};
-
-static Bool GetMappings(KeySymsPtr pKeySyms, CARD8 *pModMap)
-{
-  int i;
-
-  for (i = 0; i < MAP_LENGTH; i++)
-    pModMap[i] = NoSymbol;
-
-  for (i = 0; i < VFB_MAP_LEN; i++) {
-    if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Caps_Lock)
-      pModMap[i + VFB_MIN_KEY] = LockMask;
-    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_L ||
-             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Shift_R)
-      pModMap[i + VFB_MIN_KEY] = ShiftMask;
-    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_L ||
-             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Control_R) {
-      pModMap[i + VFB_MIN_KEY] = ControlMask;
-    }
-    else if (keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_L ||
-             keyboardMap[i * KEYSYMS_PER_KEY] == XK_Alt_R)
-      pModMap[i + VFB_MIN_KEY] = Mod1Mask;
-  }
-
-  pKeySyms->minKeyCode = VFB_MIN_KEY;
-  pKeySyms->maxKeyCode = VFB_MAX_KEY;
-  pKeySyms->mapWidth = KEYSYMS_PER_KEY;
-  pKeySyms->map = keyboardMap;
-
-  return TRUE;
-}
-
-static void vfbBell(int percent, DeviceIntPtr device, pointer ctrl, int class_)
-{
-  if (percent > 0)
-    vncBell();
-}
-
-static int vfbKeybdProc(DeviceIntPtr pDevice, int onoff)
-{
-  KeySymsRec		keySyms;
-  CARD8 		modMap[MAP_LENGTH];
-  DevicePtr pDev = (DevicePtr)pDevice;
-
-  switch (onoff)
-  {
-  case DEVICE_INIT: 
-    GetMappings(&keySyms, modMap);
-    InitKeyboardDeviceStruct(pDev, &keySyms, modMap,
-                             (BellProcPtr)vfbBell, (KbdCtrlProcPtr)NoopDDA);
-    break;
-  case DEVICE_ON: 
-    pDev->on = TRUE;
-    break;
-  case DEVICE_OFF: 
-    pDev->on = FALSE;
-    break;
-  case DEVICE_CLOSE:
-    break;
-  }
-  return Success;
-}
-
-static int vfbMouseProc(DeviceIntPtr pDevice, int onoff)
+void DDXRingBell(int percent, int pitch, int duration)
 {
-  BYTE map[6];
-  DevicePtr pDev = (DevicePtr)pDevice;
-
-  switch (onoff)
-  {
-  case DEVICE_INIT:
-    map[1] = 1;
-    map[2] = 2;
-    map[3] = 3;
-    map[4] = 4;
-    map[5] = 5;
-    InitPointerDeviceStruct(pDev, map, 5, miPointerGetMotionEvents,
-                            (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize());
-    break;
-
-  case DEVICE_ON:
-    pDev->on = TRUE;
-    break;
-
-  case DEVICE_OFF:
-    pDev->on = FALSE;
-    break;
-
-  case DEVICE_CLOSE:
-    break;
-  }
-  return Success;
+  vncRingBell (percent, pitch, duration);
 }
-
 // InitInput is called after InitExtensions, so we're guaranteed that
 // vncExtensionInit() has already been called.
 
 void InitInput(int argc, char *argv[])
 {
-  DeviceIntPtr p, k;
-  p = AddInputDevice(vfbMouseProc, TRUE);
-  k = AddInputDevice(vfbKeybdProc, TRUE);
-  RegisterPointerDevice(p);
-  RegisterKeyboardDevice(k);
-  miRegisterPointerDevice(screenInfo.screens[0], p);
-  (void)mieqInit ((DevicePtr)k, (DevicePtr)p);
+  mieqInit ();
 }

vnc-noxkb.patch:

--- NEW FILE vnc-noxkb.patch ---
diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac.noxkb vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac
--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac.noxkb	2008-03-05 13:02:23.000000000 +0100
+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac	2008-03-05 13:02:41.000000000 +0100
@@ -1009,7 +1009,7 @@ AC_DEFINE(SHAPE, 1, [Support SHAPE exten
 
 AC_DEFINE(XKB, 1, [Build XKB])
 AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+AC_DEFINE(XKB_DFLT_DISABLED, 1, [Disable XKB per default])
 REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
 XKB_LIB='$(top_builddir)/xkb/libxkb.la'
 XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'

vnc-paint.patch:

--- NEW FILE vnc-paint.patch ---
diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncHooks.cc.paint vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncHooks.cc
--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncHooks.cc.paint	2008-03-06 14:54:52.000000000 +0100
+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncHooks.cc	2008-03-06 14:56:54.000000000 +0100
@@ -72,8 +72,6 @@ typedef struct {
 
   CloseScreenProcPtr           CloseScreen;
   CreateGCProcPtr              CreateGC;
-  PaintWindowBackgroundProcPtr PaintWindowBackground;
-  PaintWindowBorderProcPtr     PaintWindowBorder;
   CopyWindowProcPtr            CopyWindow;
   ClearToBackgroundProcPtr     ClearToBackground;
   RestoreAreasProcPtr          RestoreAreas;
@@ -106,10 +104,6 @@ static DevPrivateKey vncHooksGCPrivateKe
 
 static Bool vncHooksCloseScreen(int i, ScreenPtr pScreen);
 static Bool vncHooksCreateGC(GCPtr pGC);
-static void vncHooksPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion,
-                                          int what);
-static void vncHooksPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion,
-                                      int what);
 static void vncHooksCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
                                RegionPtr pOldRegion);
 static void vncHooksClearToBackground(WindowPtr pWin, int x, int y, int w,
@@ -231,8 +225,6 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
 
   vncHooksScreen->CloseScreen = pScreen->CloseScreen;
   vncHooksScreen->CreateGC = pScreen->CreateGC;
-  vncHooksScreen->PaintWindowBackground = pScreen->PaintWindowBackground;
-  vncHooksScreen->PaintWindowBorder = pScreen->PaintWindowBorder;
   vncHooksScreen->CopyWindow = pScreen->CopyWindow;
   vncHooksScreen->ClearToBackground = pScreen->ClearToBackground;
   vncHooksScreen->RestoreAreas = pScreen->RestoreAreas;
@@ -253,8 +245,6 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
 
   pScreen->CloseScreen = vncHooksCloseScreen;
   pScreen->CreateGC = vncHooksCreateGC;
-  pScreen->PaintWindowBackground = vncHooksPaintWindowBackground;
-  pScreen->PaintWindowBorder = vncHooksPaintWindowBorder;
   pScreen->CopyWindow = vncHooksCopyWindow;
   pScreen->ClearToBackground = vncHooksClearToBackground;
   pScreen->RestoreAreas = vncHooksRestoreAreas;
@@ -297,8 +287,6 @@ static Bool vncHooksCloseScreen(int i, S
   SCREEN_UNWRAP(pScreen_, CloseScreen);
 
   pScreen->CreateGC = vncHooksScreen->CreateGC;
-  pScreen->PaintWindowBackground = vncHooksScreen->PaintWindowBackground;
-  pScreen->PaintWindowBorder = vncHooksScreen->PaintWindowBorder;
   pScreen->CopyWindow = vncHooksScreen->CopyWindow;
   pScreen->ClearToBackground = vncHooksScreen->ClearToBackground;
   pScreen->RestoreAreas = vncHooksScreen->RestoreAreas;
@@ -333,38 +321,6 @@ static Bool vncHooksCreateGC(GCPtr pGC)
   return ret;
 }
 
-// PaintWindowBackground - changed region is the given region
-
-static void vncHooksPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion,
-                                          int what)
-{
-  SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBackground);
-
-  RegionHelper changed(pScreen, pRegion);
-
-  (*pScreen->PaintWindowBackground) (pWin, pRegion, what);
-
-  vncHooksScreen->desktop->add_changed(changed.reg);
-
-  SCREEN_REWRAP(PaintWindowBackground);
-}
-
-// PaintWindowBorder - changed region is the given region
-
-static void vncHooksPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion,
-                                      int what)
-{
-  SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBorder);
-
-  RegionHelper changed(pScreen, pRegion);
-
-  (*pScreen->PaintWindowBorder) (pWin, pRegion, what);
-
-  vncHooksScreen->desktop->add_changed(changed.reg);
-
-  SCREEN_REWRAP(PaintWindowBorder);
-}
-
 // CopyWindow - destination of the copy is the old region, clipped by
 // borderClip, translated by the delta.  This call only does the copy - it
 // doesn't affect any other bits.
@@ -534,16 +490,9 @@ static void vncHooksValidateGC(GCPtr pGC
   (*pGC->funcs->ValidateGC) (pGC, changes, pDrawable);
     
   u.vncHooksGC->wrappedOps = 0;
-  if (pDrawable->type == DRAWABLE_WINDOW && ((WindowPtr)pDrawable)->viewable) {
-    WindowPtr pWin = (WindowPtr)pDrawable;
-    RegionPtr pRegion = &pWin->clipList;
-
-    if (pGC->subWindowMode == IncludeInferiors)
-      pRegion = &pWin->borderClip;
-    if (REGION_NOTEMPTY(pDrawable->pScreen, pRegion)) {
-      u.vncHooksGC->wrappedOps = pGC->ops;
-      DBGPRINT((stderr,"vncHooksValidateGC: wrapped GC ops\n"));
-    }
+  if (pDrawable->type == DRAWABLE_WINDOW || pDrawable->type == DRAWABLE_PIXMAP) {
+    u.vncHooksGC->wrappedOps = pGC->ops;
+    DBGPRINT((stderr,"vncHooksValidateGC: wrapped GC ops\n"));
   }
 }
 

vnc-privates.patch:

--- NEW FILE vnc-privates.patch ---
--- a/bin/xorg/hw/vnc/vncHooks.cc	Mon Jan 21 17:29:11 2008 +0100
+++ b/bin/xorg/hw/vnc/vncHooks.cc	Thu Jan 24 09:50:48 2008 +0100
@@ -86,9 +86,15 @@ typedef struct {
     GCOps *wrappedOps;
 } vncHooksGCRec, *vncHooksGCPtr;
 
-static int vncHooksScreenIndex;
-static int vncHooksGCIndex;
+static DevPrivateKey vncHooksScrPrivateKey = &vncHooksScrPrivateKey;
+static DevPrivateKey vncHooksGCPrivateKey = &vncHooksGCPrivateKey;
 
+#define vncHooksScreenPrivate(scrn) \
+	(vncHooksScreenPtr) dixLookupPrivate (&(scrn)->devPrivates, \
+					      vncHooksScrPrivateKey)
+#define vncHooksGCPrivate(pGC) \
+	(vncHooksGCPtr) dixLookupPrivate (&(pGC)->devPrivates, \
+					  vncHooksGCPrivateKey)
 
 // screen functions
 
@@ -209,26 +215,11 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
   if (vncHooksGeneration != serverGeneration) {
     vncHooksGeneration = serverGeneration;
 
-    vncHooksScreenIndex = AllocateScreenPrivateIndex();
-    if (vncHooksScreenIndex < 0) {
-      ErrorF("vncHooksInit: AllocateScreenPrivateIndex failed\n");
-      return FALSE;
-    }
-
-    vncHooksGCIndex = AllocateGCPrivateIndex();
-    if (vncHooksGCIndex < 0) {
-      ErrorF("vncHooksInit: AllocateGCPrivateIndex failed\n");
-      return FALSE;
-    }
-  }
-
-  if (!AllocateGCPrivate(pScreen, vncHooksGCIndex, sizeof(vncHooksGCRec))) {
-    ErrorF("vncHooksInit: AllocateGCPrivate failed\n");
-    return FALSE;
+    if (!dixRequestPrivate (vncHooksGCPrivateKey, sizeof (vncHooksGCRec)))
+	return FALSE;
   }
 
   vncHooksScreen = (vncHooksScreenPtr)xnfalloc(sizeof(vncHooksScreenRec));
-  pScreen->devPrivates[vncHooksScreenIndex].ptr = (pointer)vncHooksScreen;
 
   vncHooksScreen->desktop = desktop;
 
@@ -266,6 +257,8 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
   pScreen->DisplayCursor = vncHooksDisplayCursor;
   pScreen->BlockHandler = vncHooksBlockHandler;
 
+  dixSetPrivate (&pScreen->devPrivates, vncHooksScrPrivateKey, vncHooksScreen);
+
   return TRUE;
 }
 
@@ -281,11 +274,10 @@ Bool vncHooksInit(ScreenPtr pScreen, Xse
 // distinct type, so it would have to use templates, and it's not worth that
 // much pain.
 
-#define SCREEN_UNWRAP(scrn,field)                                         \
-  ScreenPtr pScreen = scrn;                                               \
-  vncHooksScreenPtr vncHooksScreen                                        \
-    = ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr); \
-  pScreen->field = vncHooksScreen->field;                                 \
+#define SCREEN_UNWRAP(scrn,field) \
+  ScreenPtr pScreen = scrn; \
+  vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (scrn); \
+  pScreen->field = vncHooksScreen->field; \
   DBGPRINT((stderr,"vncHooks" #field " called\n"));
 
 #define SCREEN_REWRAP(field) pScreen->field = vncHooks##field;
@@ -322,8 +314,7 @@ static Bool vncHooksCreateGC(GCPtr pGC)
 {
   SCREEN_UNWRAP(pGC->pScreen, CreateGC);
     
-  vncHooksGCPtr vncHooksGC
-    = (vncHooksGCPtr)pGC->devPrivates[vncHooksGCIndex].ptr;
+  vncHooksGCPtr vncHooksGC = vncHooksGCPrivate (pGC);
 
   Bool ret = (*pScreen->CreateGC) (pGC);
 
@@ -507,7 +498,7 @@ class GCFuncUnwrapper {
 class GCFuncUnwrapper {
 public:
   GCFuncUnwrapper(GCPtr pGC_) : pGC(pGC_) {
-    vncHooksGC = (vncHooksGCPtr)pGC->devPrivates[vncHooksGCIndex].ptr;
+    vncHooksGC = vncHooksGCPrivate (pGC);
     pGC->funcs = vncHooksGC->wrappedFuncs;
     if (vncHooksGC->wrappedOps)
       pGC->ops = vncHooksGC->wrappedOps;
@@ -592,7 +583,7 @@ public:
   GCOpUnwrapper(DrawablePtr pDrawable, GCPtr pGC_)
     : pGC(pGC_), pScreen(pDrawable->pScreen)
   {
-    vncHooksGC = (vncHooksGCPtr)pGC->devPrivates[vncHooksGCIndex].ptr;
+    vncHooksGC = vncHooksGCPrivate (pGC);
     oldFuncs = pGC->funcs;
     pGC->funcs = vncHooksGC->wrappedFuncs;
     pGC->ops = vncHooksGC->wrappedOps;
@@ -611,8 +602,7 @@ public:
 #define GC_OP_UNWRAPPER(pDrawable, pGC, name)                             \
   GCOpUnwrapper u(pDrawable, pGC);                                        \
   ScreenPtr pScreen = (pDrawable)->pScreen;                               \
-  vncHooksScreenPtr vncHooksScreen                                        \
-    = ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr); \
+  vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (pScreen);	  \
   DBGPRINT((stderr,"vncHooks" #name " called\n"));
 
 
@@ -1511,8 +1501,7 @@ static void vncHooksComposite(CARD8 op, 
                               INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
 {
     ScreenPtr           pScreen = pDst->pDrawable->pScreen;
-    vncHooksScreenPtr vncHooksScreen = \
-        ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr);
+    vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (pScreen);
     PictureScreenPtr    ps = GetPictureScreen(pScreen);
     BoxRec              box;
 
@@ -1534,8 +1523,7 @@ static void vncHooksGlyphs(CARD8 op, Pic
                            GlyphListPtr list, GlyphPtr *glyphs)
 {
     ScreenPtr           pScreen = pDst->pDrawable->pScreen;
-    vncHooksScreenPtr vncHooksScreen = \
-        ((vncHooksScreenPtr)pScreen->devPrivates[vncHooksScreenIndex].ptr);
+    vncHooksScreenPtr vncHooksScreen = vncHooksScreenPrivate (pScreen);
     PictureScreenPtr    ps = GetPictureScreen(pScreen);
     int                 x, y;
     int                 n;

vnc-selections.patch:

--- NEW FILE vnc-selections.patch ---
diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncExtInit.cc.selections vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncExtInit.cc
--- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncExtInit.cc.selections	2008-03-10 15:34:24.000000000 +0100
+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/vncExtInit.cc	2008-03-11 10:55:44.000000000 +0100
@@ -62,11 +62,9 @@ extern "C" {
   static void SendSelectionChangeEvent(Atom selection);
   static int ProcVncExtDispatch(ClientPtr client);
   static int SProcVncExtDispatch(ClientPtr client);
+  static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, pointer args);
 
   extern char *display;
-
-  extern Selection *CurrentSelections;
-  extern int NumCurrentSelections;
 }
 
 using namespace rfb;
@@ -99,7 +97,6 @@ struct VncInputSelect {
   VncInputSelect* next;
 };
 
-static int nPrevSelections = 0;
 static TimeStamp* prevSelectionTimes = 0;
 
 static int vncErrorBase = 0;
@@ -147,6 +144,10 @@ void vncExtensionInit()
     FatalError("AddCallback failed\n");
   }
 
+  if (!AddCallback(&SelectionCallback, vncSelectionCallback, 0)) {
+    FatalError("Add selection callback failed\n");
+  }
+
   try {
     if (!initialised) {
       rfb::initStdIOLoggers();
@@ -212,6 +213,14 @@ static void vncResetProc(ExtensionEntry*
 {
 }
 
+static void vncSelectionCallback(CallbackListPtr *callbacks, pointer data, pointer args)
+{
+  SelectionInfoRec *info = (SelectionInfoRec *) args;
+  Selection *selection = info->selection;
+
+  SendSelectionChangeEvent(selection->selection);
+}
+
 //
 // vncBlockHandler - called just before the X server goes into select().  Call
 // on to the block handler for each desktop.  Then check whether any of the
@@ -227,27 +236,6 @@ static void vncBlockHandler(pointer data
       desktop[scr]->blockHandler(fds);
     }
   }
-
-  if (nPrevSelections != NumCurrentSelections) {
-    prevSelectionTimes
-      = (TimeStamp*)xnfrealloc(prevSelectionTimes,
-                               NumCurrentSelections * sizeof(TimeStamp));
-    for (int i = nPrevSelections; i < NumCurrentSelections; i++) {
-      prevSelectionTimes[i].months = 0;
-      prevSelectionTimes[i].milliseconds = 0;
-    }
-    nPrevSelections = NumCurrentSelections;
-  }
-  for (int i = 0; i < NumCurrentSelections; i++) {
-    if (CurrentSelections[i].lastTimeChanged.months
-        != prevSelectionTimes[i].months ||
-        CurrentSelections[i].lastTimeChanged.milliseconds
-        != prevSelectionTimes[i].milliseconds)
-    {
-      SendSelectionChangeEvent(CurrentSelections[i].selection);
-      prevSelectionTimes[i] = CurrentSelections[i].lastTimeChanged;
-    }
-  }
 }
 
 static void vncWakeupHandler(pointer data, int nfds, pointer readmask)


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/vnc/devel/.cvsignore,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- .cvsignore	22 Jan 2008 17:16:12 -0000	1.23
+++ .cvsignore	11 Mar 2008 12:50:34 -0000	1.24
@@ -1,3 +1 @@
 vnc-4_1_2-unixsrc.tar.gz
-vnc-4_1-javasrc.tar.gz
-xserver-1.3.0.0-37.fc8.tar.bz2


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/vnc/devel/sources,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- sources	22 Jan 2008 17:16:12 -0000	1.24
+++ sources	11 Mar 2008 12:50:34 -0000	1.25
@@ -1,3 +1 @@
 cf9a6fe8f592286b5e0fdde686504ffb  vnc-4_1_2-unixsrc.tar.gz
-9407ce1f215aefca77bef12670745280  vnc-4_1-javasrc.tar.gz
-db16d9f0e5b19a34ac5e6f353b79ec8d  xserver-1.3.0.0-37.fc8.tar.bz2

vnc-autotools.patch:

Index: vnc-autotools.patch
===================================================================
RCS file: /cvs/pkgs/rpms/vnc/devel/vnc-autotools.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- vnc-autotools.patch	2 Mar 2007 15:33:54 -0000	1.2
+++ vnc-autotools.patch	11 Mar 2008 12:50:34 -0000	1.3
@@ -366,32 +366,6 @@
 +                 vncviewer/Makefile
 +                 x0vncserver/Makefile])
 +AC_OUTPUT
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am.autotools	2007-02-16 09:52:43.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am	2007-02-16 09:53:24.000000000 +0100
-@@ -42,10 +42,7 @@
- 		../xfree86/common/libcommon.la \
- 		-lX11 \
- 		libvnccommon.la \
--		../../../../common/rfb/librfb.a \
--		../../../../common/rdr/librdr.a \
--		../../../../common/network/libnetwork.a \
--		../../../../common/Xregion/libXregion.a
-+		../../../../common/rfb/librfb.la
- 
- Xvnc_CFLAGS =  -DHAVE_DIX_CONFIG_H \
- 		-DNO_HW_ONLY_EXTS \
-@@ -68,10 +65,7 @@
- libvnc_la_SOURCES = xf86vncModule.cc
- libvnc_la_LIBADD = \
- 		libvnccommon.la \
--		../../../../common/rfb/librfb.a \
--		../../../../common/rdr/librdr.a \
--		../../../../common/network/libnetwork.a \
--		../../../../common/Xregion/libXregion.a
-+		../../../../common/rfb/librfb.la
- libvnc_la_CXXFLAGS = \
- 		-I../../../../common \
- 		-I$(top_srcdir)/hw/xfree86/common \
 --- /dev/null	2007-02-16 09:39:42.585819347 +0100
 +++ vnc-4_1_2-unixsrc/unix/vncviewer/Makefile.am	2007-02-16 09:51:11.000000000 +0100
 @@ -0,0 +1,24 @@

vnc-gcc43.patch:

Index: vnc-gcc43.patch
===================================================================
RCS file: /cvs/pkgs/rpms/vnc/devel/vnc-gcc43.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- vnc-gcc43.patch	22 Jan 2008 17:16:12 -0000	1.1
+++ vnc-gcc43.patch	11 Mar 2008 12:50:34 -0000	1.2
@@ -11,17 +11,6 @@
  #include <network/TcpSocket.h>
  #include <rfb/util.h>
  #include <rfb/LogWriter.h>
-diff -up vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/render/picturestr.h.gcc43 vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/render/picturestr.h
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/render/picturestr.h.gcc43	2008-01-09 14:57:58.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/render/picturestr.h	2008-01-09 14:58:08.000000000 +0100
-@@ -26,6 +26,7 @@
- #ifndef _PICTURESTR_H_
- #define _PICTURESTR_H_
- 
-+#include <X11/X.h>
- #include "glyphstr.h"
- #include "scrnintstr.h"
- #include "resource.h"
 diff -up vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx.gcc43 vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx
 --- vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx.gcc43	2006-05-15 18:56:20.000000000 +0200
 +++ vnc-4_1_2-unixsrc/unix/tx/TXImage.cxx	2008-01-09 14:51:54.000000000 +0100

vnc-modular-xorg.patch:

Index: vnc-modular-xorg.patch
===================================================================
RCS file: /cvs/pkgs/rpms/vnc/devel/vnc-modular-xorg.patch,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- vnc-modular-xorg.patch	2 Mar 2007 15:33:54 -0000	1.12
+++ vnc-modular-xorg.patch	11 Mar 2008 12:50:34 -0000	1.13
@@ -1,142 +1,3 @@
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c.modular-xorg	2007-03-02 15:45:37.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/mi/miinitext.c	2007-03-02 15:45:38.000000000 +0100
-@@ -283,6 +283,9 @@
- #ifdef MITMISC
- extern void MITMiscExtensionInit(INITARGS);
- #endif
-+#ifdef VNCEXT
-+extern void vncExtensionInit(INITARGS);
-+#endif
- #ifdef XIDLE
- extern void XIdleExtensionInit(INITARGS);
- #endif
-@@ -561,6 +564,9 @@
- #ifdef MITMISC
-     if (!noMITMiscExtension) MITMiscExtensionInit();
- #endif
-+#ifdef VNCEXT
-+    vncExtensionInit();
-+#endif
- #ifdef XIDLE
-     if (!noXIdleExtension) XIdleExtensionInit();
- #endif
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am.modular-xorg	2007-03-02 15:45:38.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/Makefile.am	2007-03-02 15:47:10.000000000 +0100
-@@ -30,6 +30,8 @@
- XPRINT_SUBDIRS = xprint
- endif
- 
-+XVNC_SUBDIRS = vnc
-+
- # need to add darwin support here
- 
- SUBDIRS =			\
-@@ -39,6 +41,7 @@
- 	$(XVFB_SUBDIRS)		\
- 	$(XNEST_SUBDIRS)	\
- 	$(DMX_SUBDIRS)          \
-+	$(XVNC_SUBDIRS)		\
-         $(KDRIVE_SUBDIRS)	\
- 	$(XPRINT_SUBDIRS)
- 
---- /dev/null	2007-03-01 10:25:08.783929433 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/hw/vnc/Makefile.am	2007-03-02 15:45:38.000000000 +0100
-@@ -0,0 +1,85 @@
-+noinst_LTLIBRARIES = libvnccommon.la
-+libvnccommon_la_SOURCES = \
-+		RegionHelper.h     \
-+		vncExtInit.cc     \
-+		vncExtInit.h      \
-+		vncHooks.cc       \
-+		vncHooks.h        \
-+		XserverDesktop.cc \
-+		XserverDesktop.h
-+
-+libvnccommon_la_CXXFLAGS = \
-+		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-+		-DVENDOR_STRING="\"$(VENDOR_STRING)\"" \
-+		-DGC_HAS_COMPOSITE_CLIP \
-+		-DVNC_USE_FB \
-+		-I/usr/include/X11 \
-+		-I../../../../common \
-+		-I../../../vncconfig
-+
-+bin_PROGRAMS = Xvnc
-+
-+Xvnc_SOURCES = \
-+		xvnc.cc \
-+		$(top_srcdir)/Xext/dpmsstubs.c \
-+		$(top_srcdir)/Xi/stubs.c \
-+		$(top_srcdir)/mi/miinitext.c \
-+		$(top_srcdir)/fb/fbcmap.c
-+
-+Xvnc_LDADD =	$(XORG_CORE_LIBS) \
-+		$(XORG_LIBS) \
-+		$(XSERVER_LIBS) \
-+		../../fb/libfb.la \
-+		../../mi/libminimi.la \
-+		../../render/librender.la \
-+		../../xkb/libxkbstubs.la \
-+		../../dbe/libdbe.la \
-+		../../Xext/libXext.la \
-+		../../XTrap/libxtrap.la \
-+		../../record/librecord.la \
-+		../xfree86/os-support/libxorgos.la \
-+		../../os/libos.la \
-+		../xfree86/common/libcommon.la \
-+		-lX11 \
-+		libvnccommon.la \
-+		../../../../common/rfb/librfb.a \
-+		../../../../common/rdr/librdr.a \
-+		../../../../common/network/libnetwork.a \
-+		../../../../common/Xregion/libXregion.a
-+
-+Xvnc_CFLAGS =  -DHAVE_DIX_CONFIG_H \
-+		-DNO_HW_ONLY_EXTS \
-+		-DNO_MODULE_EXTS \
-+		-DXFree86Server -DVNCEXT
-+
-+Xvnc_CXXFLAGS = $(Xvnc_CFLAGS) \
-+		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-+		-DVENDOR_STRING="\"$(VENDOR_STRING)\"" \
-+		-DVNC_USE_FB \
-+		-I../../../../common \
-+		-I../../../vncconfig \
-+		-I../../mi \
-+		-I ../../render \
-+		-I/usr/include/X11
-+
-+libvnc_la_LTLIBRARIES = libvnc.la
-+libvnc_la_LDFLAGS = -module -avoid-version
-+libvnc_ladir = $(moduledir)/extensions
-+libvnc_la_SOURCES = xf86vncModule.cc
-+libvnc_la_LIBADD = \
-+		libvnccommon.la \
-+		../../../../common/rfb/librfb.a \
-+		../../../../common/rdr/librdr.a \
-+		../../../../common/network/libnetwork.a \
-+		../../../../common/Xregion/libXregion.a
-+libvnc_la_CXXFLAGS = \
-+		-I../../../../common \
-+		-I$(top_srcdir)/hw/xfree86/common \
-+		-I$(top_srcdir)/hw/xfree86/os-support \
-+		-I$(top_srcdir)/hw/xfree86/os-support/bus \
-+		-DXFree86Module -DXFree86LOADER -DIN_MODULE
-+
-+AM_CXXFLAGS =	$(CFLAGS) \
-+		-DVENDOR_RELEASE="$(VENDOR_RELEASE)" \
-+		-DVENDOR_STRING="\"$(VENDOR_STRING)\""
-+
---- vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac.modular-xorg	2007-03-02 15:45:38.000000000 +0100
-+++ vnc-4_1_2-unixsrc/unix/xorg-x11-server-source/configure.ac	2007-03-02 15:45:38.000000000 +0100
-@@ -1793,6 +1793,7 @@
- hw/xnest/Makefile
- hw/xwin/Makefile
- hw/darwin/Makefile
-+hw/vnc/Makefile
- hw/kdrive/Makefile
- hw/kdrive/ati/Makefile
- hw/kdrive/chips/Makefile
 --- vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc.modular-xorg	2007-03-02 15:45:38.000000000 +0100
 +++ vnc-4_1_2-unixsrc/unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc	2007-03-02 15:45:38.000000000 +0100
 @@ -36,8 +36,6 @@


Index: vnc.spec
===================================================================
RCS file: /cvs/pkgs/rpms/vnc/devel/vnc.spec,v
retrieving revision 1.183
retrieving revision 1.184
diff -u -r1.183 -r1.184
--- vnc.spec	18 Feb 2008 20:08:25 -0000	1.183
+++ vnc.spec	11 Mar 2008 12:50:34 -0000	1.184
@@ -1,21 +1,16 @@
 %define vnc_version 4_1_2
-%define java_vnc_version 4_1
 
 Summary:   A remote display system
 Name:      vnc
 Version:   4.1.2
-Release:   25%{?dist}
+Release:   25.3%{?dist}
 URL:       http://www.realvnc.com
 Source0:   http://www.realvnc.com/dist/vnc-%{vnc_version}-unixsrc.tar.gz
-Source1:   http://www.realvnc.com/dist/vnc-%{java_vnc_version}-javasrc.tar.gz
 Source2:   vncserver.init
 Source3:   vnc-16x16.png
 Source4:   vnc-24x24.png
 Source5:   vnc-48x48.png
-
-# XXX Temporary build with F8 xserver due new Input events handling in 1.4.99
-Source6:   xserver-1.3.0.0-37.fc8.tar.bz2
-
+Source1:   Makefile.am
 Patch0:    vnc-cookie.patch
 Patch1:    vnc-gcc4.patch
 Patch2:    vnc-use-fb.patch
@@ -40,30 +35,33 @@
 Patch33:   vnc-always_use_fb.patch
 Patch34:   vnc-vsnprintf.patch
 Patch36:   vnc-24bit.patch
-Patch37:   vnc-noxorg.patch
 Patch38:   vnc-gcc43.patch
-Patch39:   vnc-F9mesa.patch
+Patch40:   vnc-xorg.patch
+Patch41:   vnc-privates.patch
+Patch42:   vnc-mieq.patch
+Patch43:   vnc-allocate.patch
+Patch44:   vnc-noxkb.patch
+Patch45:   vnc-paint.patch
+Patch46:   vnc-selections.patch
 License:   GPLv2
 Group:     User Interface/Desktops
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
 BuildRequires: perl 
 BuildRequires: zlib-devel libjpeg-devel
 BuildRequires: desktop-file-utils >= 0.2.92
-BuildRequires: gcc-java
 BuildRequires: autoconf,  automake, libtool, flex, bison, pkgconfig, patchutils
 BuildRequires: expat-devel, freetype-devel
 BuildRequires: libX11-devel, xorg-x11-xtrans-devel, libXau-devel
 BuildRequires: libXdmcp-devel, libxkbfile-devel, libXfont-devel
 BuildRequires: xorg-x11-proto-devel, libXext-devel, tcp_wrappers-devel
 BuildRequires: libXtst-devel, libfontenc-devel, xorg-x11-util-macros
-BuildRequires: libXt-devel
-BuildRequires: libstdc++-devel, gcc-c++, libselinux-devel
-#BuildRequires: xorg-x11-server-source
+BuildRequires: libXt-devel, libXv-devel, pixman-devel
+BuildRequires: libselinux-devel
+BuildRequires: xorg-x11-server-source
 BuildRequires: mesa-libGL-devel >= 6.5.2, mesa-source >= 6.5.2, libdrm-devel
 
 Requires: gtk2 >= 2.6
 Requires: coreutils
-Requires: vnc-libs
 
 %description
 Virtual Network Computing (VNC) is a remote display system which
@@ -75,8 +73,7 @@
 
 %package server
 Summary: A VNC server
-Requires: bash >= 2.0, util-linux, xorg-x11-fonts-base, xorg-x11-xauth, chkconfig
-Requires: vnc-libs
+Requires: bash >= 2.0, util-linux, xorg-x11-xauth, chkconfig
 Group: User Interface/X
 
 %description server
@@ -93,12 +90,9 @@
 
 %prep
 %setup -q -n vnc-%{vnc_version}-unixsrc -a1
-
-# XXX - new event handling in 1.4.99 xserver
-#cp -r %{_datadir}/xorg-x11-server-source unix
-pushd unix; mkdir xorg-x11-server-source; cd xorg-x11-server-source
-tar xf %{SOURCE6}
-popd
+cp -r %{_datadir}/xorg-x11-server-source unix
+mkdir -p unix/xorg-x11-server-source/hw/vnc
+cp %{SOURCE1} unix/xorg-x11-server-source/hw/vnc/
 
 %patch0 -p1 -b .cookie
 %patch1 -p1 -b .gcc4
@@ -109,6 +103,9 @@
 %patch8 -p1 -b .restart
 %patch9 -p1 -b .vncpasswd
 %patch11 -p1 -b .modular-xorg
+pushd unix/xorg-x11-server-source
+%patch40 -p1 -b .vnc
+popd
 %patch12 -p1 -b .nohttpd
 %patch15 -p1 -b .viewer-reparent
 %patch16 -p1 -b .64bit
@@ -124,38 +121,42 @@
 %patch33 -p1 -b .always_use_fb
 %patch34 -p1 -b .vsnprintf
 %patch36 -p1 -b .24bit
-%patch37 -p1 -b .nomodule
 %patch38 -p1 -b .gcc43
-%patch39 -p1 -b .F9mesa
 
 cp -a unix/xc/programs/Xserver/vnc/Xvnc/xvnc.cc \
 	unix/xc/programs/Xserver/Xvnc.man \
 	unix/xc/programs/Xserver/vnc/*.{h,cc} \
 	unix/xorg-x11-server-source/hw/vnc/
-cp -a unix/xorg-x11-server-source/{cfb/cfb.h,hw/vnc}
-cp -a unix/xorg-x11-server-source/{fb/fb.h,hw/vnc}
-cp -a unix/xorg-x11-server-source/{fb/fbrop.h,hw/vnc}
-sed -i -e 's,xor,c_xor,' -e 's,and,c_and,' \
-	unix/xorg-x11-server-source/hw/vnc/{cfb,fb,fbrop}.h
+
+pushd unix/xorg-x11-server-source/hw/vnc
+%patch41 -p5 -b .privates
+popd
+%patch42 -p1 -b .mieq
+%patch43 -p1 -b .alloc
+%patch44 -p1 -b .noxkb
+%patch45 -p1 -b .paint
+%patch46 -p1 -b .selections
 
 %build
-cd common
+export CFLAGS="$CFLAGS $RPM_OPT_FLAGS -O0"
+export CXXFLAGS="$CFLAGS"
+
+pushd common
 autoreconf -fiv
 %configure
 make %{?_smp_mflags}
+popd
 
-cd ../vnc-%{java_vnc_version}-javasrc/java
-make JAVAC="gcj -C" JAR=fastjar %{?_smp_mflags}
-
-cd ../../unix
+pushd unix
 autoreconf -fiv
 %configure
 make %{?_smp_mflags}
+popd
 
-cd xorg-x11-server-source
-aclocal; automake -a; autoconf
+pushd unix/xorg-x11-server-source
+autoreconf -fiv
 %configure --disable-xorg \
-	--disable-xnest --enable-xvfb \
+	--disable-xnest --disable-xvfb \
 	--disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
 	--with-pic \
         --disable-xorgcfg \
@@ -174,9 +175,12 @@
 	--disable-xevie \
 	--disable-dri \
         --enable-glx \
+	--disable-config-dbus \
+	--disable-config-hal \
         --with-mesa-source=%{_datadir}/mesa/source
 
 make %{?_smp_mflags}
+popd
 
 %install
 rm -rf $RPM_BUILD_ROOT
@@ -201,9 +205,6 @@
 make install DESTDIR=$RPM_BUILD_ROOT
 cd ../../../
 
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/vnc/classes
-cp -a ../vnc-%{java_vnc_version}-javasrc/java/{index.vnc,logo150x150.gif,vncviewer.jar} $RPM_BUILD_ROOT%{_datadir}/vnc/classes
-
 mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
 install -m755 %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/vncserver
 
@@ -258,7 +259,7 @@
   --add-category Application                           \
   vncviewer.desktop
 
-# removing unwanted files
+# remove unwanted files
 rm -f $RPM_BUILD_ROOT%{_libdir}/librfb.a
 rm -f $RPM_BUILD_ROOT%{_libdir}/librfb.la
 rm -f $RPM_BUILD_ROOT%{_libdir}/librfb.so
@@ -313,7 +314,6 @@
 %{_bindir}/vncconfig
 %{_bindir}/vncserver
 %{_bindir}/x0vncserver
-%{_datadir}/vnc
 %{_mandir}/man1/Xvnc.1*
 %{_mandir}/man1/vncpasswd.1*
 %{_mandir}/man1/vncconfig.1*
@@ -326,6 +326,16 @@
 %{_libdir}/librfb.so.*
 
 %changelog
+* Mon Mar 11 2008 Adam Tkac <atkac redhat com> 4.1.2-25.3
+- BuildRequires and Requires cleanup
+- don't build java viewer (problems due new gcj)
+- use xorg codebase from xorg-x11-server-source package again
+  - vnc-selection.patch - new xserver selection API/ABI
+  - vnc-xkb.patch - disable XKEYBOARD extension
+  - vnc-paint.patch - PaintWindow{Background,Border} hooks have been removed
+  - vnc-privates.patch - update devPrivates handling
+  - vnc-mieq.patch - use event queue to handle input events
+
 * Mon Feb 18 2008 Fedora Release Engineering <rel-eng at fedoraproject.org> - 4.1.2-25
 - Autorebuild for GCC 4.3
 




More information about the fedora-extras-commits mailing list