Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 136522
Collapse All | Expand All

(-)vnc-4.0-unixsrc.orig/configure.in (+5 lines)
Lines 78-83 Link Here
78
SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=int')
78
SOCKLEN_T_DEFINE='-DVNC_SOCKLEN_T=int')
79
AC_SUBST(SOCKLEN_T_DEFINE)
79
AC_SUBST(SOCKLEN_T_DEFINE)
80
80
81
AC_CHECK_LIB(Xinerama, XineramaIsActive,
82
       [ AC_DEFINE(HAVE_XINERAMA, 1, [Define if you have Xinerama support])
83
         X_PRE_LIBS="$X_PRE_LIBS -lXinerama"
84
       ],, $X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS)
85
81
BOILERPLATE=boilerplate.mk
86
BOILERPLATE=boilerplate.mk
82
87
83
if (sh -c "make --version" 2>/dev/null | grep GNU 2>&1 >/dev/null); then
88
if (sh -c "make --version" 2>/dev/null | grep GNU 2>&1 >/dev/null); then
(-)vnc-4.0-unixsrc.orig/vncviewer/CConn.cxx (-2 / +24 lines)
Lines 37-42 Link Here
37
#include "PasswdDialog.h"
37
#include "PasswdDialog.h"
38
#include "parameters.h"
38
#include "parameters.h"
39
39
40
#ifdef HAVE_XINERAMA
41
#   include <X11/extensions/Xinerama.h>
42
#endif
43
40
using namespace rfb;
44
using namespace rfb;
41
45
42
static rfb::LogWriter vlog("CConn");
46
static rfb::LogWriter vlog("CConn");
Lines 49-55 Link Here
49
StringParameter windowName("name", "The X window name", "");
53
StringParameter windowName("name", "The X window name", "");
50
54
51
CConn::CConn(Display* dpy_, int argc_, char** argv_, network::Socket* sock_,
55
CConn::CConn(Display* dpy_, int argc_, char** argv_, network::Socket* sock_,
52
             char* vncServerName)
56
             char* vncServerName, int xineramascreen)
53
  : dpy(dpy_), argc(argc_),
57
  : dpy(dpy_), argc(argc_),
54
    argv(argv_), serverHost(0), serverPort(0), sock(sock_), viewport(0),
58
    argv(argv_), serverHost(0), serverPort(0), sock(sock_), viewport(0),
55
    desktop(0), desktopEventHandler(0),
59
    desktop(0), desktopEventHandler(0),
Lines 62-68 Link Here
62
{
66
{
63
  CharArray menuKeyStr(menuKey.getData());
67
  CharArray menuKeyStr(menuKey.getData());
64
  menuKeysym = XStringToKeysym(menuKeyStr.buf);
68
  menuKeysym = XStringToKeysym(menuKeyStr.buf);
65
69
  xineramaScreen = xineramascreen;
66
  setShared(shared);
70
  setShared(shared);
67
  addSecType(secTypeNone);
71
  addSecType(secTypeNone);
68
  addSecType(secTypeVncAuth);
72
  addSecType(secTypeVncAuth);
Lines 566-572 Link Here
566
  if (fullScreen) {
570
  if (fullScreen) {
567
    XGrabKeyboard(dpy, desktop->win(), True, GrabModeAsync, GrabModeAsync,
571
    XGrabKeyboard(dpy, desktop->win(), True, GrabModeAsync, GrabModeAsync,
568
                  CurrentTime);
572
                  CurrentTime);
573
    desktop->setGrabKeyboard(true);
569
  } else {
574
  } else {
575
    desktop->setGrabKeyboard(false);
570
    XUngrabKeyboard(dpy, CurrentTime);
576
    XUngrabKeyboard(dpy, CurrentTime);
571
  }
577
  }
572
  if (oldViewport) delete oldViewport;
578
  if (oldViewport) delete oldViewport;
Lines 576-581 Link Here
576
{
582
{
577
  viewport->setMaxSize(cp.width, cp.height);
583
  viewport->setMaxSize(cp.width, cp.height);
578
  if (fullScreen) {
584
  if (fullScreen) {
585
#ifdef HAVE_XINERAMA
586
    int number;
587
    XineramaScreenInfo* info = XineramaQueryScreens (dpy, &number);
588
    // Find requested Xinerama screen
589
    for (int i = 0; (info != NULL) && (i < number); i++) {
590
      // Setup window to match found Xinerama screen
591
      if (info[i].screen_number == xineramaScreen) {
592
        viewport->setUSPosition(info[i].x_org, info[i].y_org);
593
        viewport->resize(info[i].width, info[i].height);
594
        XFree(info);
595
        return;
596
      }
597
    }
598
    XFree(info);
599
#endif
600
    // No Xinerama screen found, or none requested, fill default display
579
    viewport->resize(DisplayWidth(dpy,DefaultScreen(dpy)),
601
    viewport->resize(DisplayWidth(dpy,DefaultScreen(dpy)),
580
                     DisplayHeight(dpy,DefaultScreen(dpy)));
602
                     DisplayHeight(dpy,DefaultScreen(dpy)));
581
  } else {
603
  } else {
(-)vnc-4.0-unixsrc.orig/vncviewer/CConn.h (-1 / +2 lines)
Lines 48-54 Link Here
48
public:
48
public:
49
49
50
  CConn(Display* dpy_, int argc_, char** argv_, network::Socket* sock_,
50
  CConn(Display* dpy_, int argc_, char** argv_, network::Socket* sock_,
51
        char* vncServerName);
51
        char* vncServerName, int xineramascreen=-1);
52
  ~CConn();
52
  ~CConn();
53
53
54
  // TXDeleteWindowCallback methods
54
  // TXDeleteWindowCallback methods
Lines 118-123 Link Here
118
  bool fullScreen;
118
  bool fullScreen;
119
  bool ctrlDown;
119
  bool ctrlDown;
120
  bool altDown;
120
  bool altDown;
121
  int xineramaScreen;
121
  KeySym menuKeysym;
122
  KeySym menuKeysym;
122
  TXMenu menu;
123
  TXMenu menu;
123
  TXEventHandler* menuEventHandler;
124
  TXEventHandler* menuEventHandler;
(-)vnc-4.0-unixsrc.orig/vncviewer/DesktopWindow.cxx (+11 lines)
Lines 74-79 Link Here
74
    lastButtonMask(0)
74
    lastButtonMask(0)
75
{
75
{
76
  setEventHandler(this);
76
  setEventHandler(this);
77
  grabkeys = false;
77
  gc = XCreateGC(dpy, win(), 0, 0);
78
  gc = XCreateGC(dpy, win(), 0, 0);
78
  addEventMask(ExposureMask | ButtonPressMask | ButtonReleaseMask |
79
  addEventMask(ExposureMask | ButtonPressMask | ButtonReleaseMask |
79
               PointerMotionMask | KeyPressMask | KeyReleaseMask |
80
               PointerMotionMask | KeyPressMask | KeyReleaseMask |
Lines 425-430 Link Here
425
      XConvertSelection(dpy, xaCLIPBOARD, xaTIMESTAMP, xaSELECTION_TIME,
426
      XConvertSelection(dpy, xaCLIPBOARD, xaTIMESTAMP, xaSELECTION_TIME,
426
                        win(), ev->xcrossing.time);
427
                        win(), ev->xcrossing.time);
427
    }
428
    }
429
    // Grab keyboard
430
    if (grabkeys) {
431
      XGrabKeyboard(dpy, win(), True, GrabModeAsync, GrabModeAsync,
432
                  CurrentTime);
433
    }
428
    break;
434
    break;
429
435
430
  case LeaveNotify:
436
  case LeaveNotify:
Lines 436-441 Link Here
436
      ownSelection(xaCLIPBOARD, ev->xcrossing.time);
442
      ownSelection(xaCLIPBOARD, ev->xcrossing.time);
437
      currentSelectionTime = ev->xcrossing.time;
443
      currentSelectionTime = ev->xcrossing.time;
438
    }
444
    }
445
439
    // Release all keys - this should probably done on a FocusOut event, but
446
    // Release all keys - this should probably done on a FocusOut event, but
440
    // LeaveNotify is near enough...
447
    // LeaveNotify is near enough...
441
    for (int i = 8; i < 256; i++) {
448
    for (int i = 8; i < 256; i++) {
Lines 444-449 Link Here
444
        downKeysym[i] = 0;
451
        downKeysym[i] = 0;
445
      }
452
      }
446
    }
453
    }
454
    // Release keyboard
455
    if (grabkeys) {
456
      XUngrabKeyboard (dpy, CurrentTime); 
457
    }
447
    break;
458
    break;
448
  }
459
  }
449
}
460
}
(-)vnc-4.0-unixsrc.orig/vncviewer/DesktopWindow.h (+6 lines)
Lines 52-57 Link Here
52
52
53
  // resetLocalCursor() stops the rendering of the local cursor
53
  // resetLocalCursor() stops the rendering of the local cursor
54
  void resetLocalCursor();
54
  void resetLocalCursor();
55
  
56
  // If set, the keyboard focus will be grabbed/released when the pointer
57
  // enters/leaves the window. The window manager will take car of the
58
  // keyboard focus is unset.
59
  void setGrabKeyboard(bool grab) {grabkeys = grab;}
55
60
56
  // Methods forwarded from CConn
61
  // Methods forwarded from CConn
57
  void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
62
  void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
Lines 117-122 Link Here
117
  bool gettingInitialSelectionTime;
122
  bool gettingInitialSelectionTime;
118
  bool newServerCutText;
123
  bool newServerCutText;
119
  char* serverCutText_;
124
  char* serverCutText_;
125
  bool grabkeys;
120
126
121
  Timer setColourMapEntriesTimer;
127
  Timer setColourMapEntriesTimer;
122
  TXViewport* viewport;
128
  TXViewport* viewport;
(-)vnc-4.0-unixsrc.orig/vncviewer/vncviewer.cxx (-1 / +7 lines)
Lines 97-102 Link Here
97
/* Support for tunnelling */
97
/* Support for tunnelling */
98
StringParameter via("via", "Gateway to tunnel via", "");
98
StringParameter via("via", "Gateway to tunnel via", "");
99
99
100
#ifdef HAVE_XINERAMA
101
IntParameter xineramaScreen("XineramaScreen", "Xineramascreen used in fullscreen", -1);
102
#else
103
static int xineramaScreen=-1;
104
#endif
105
100
char aboutText[256];
106
char aboutText[256];
101
char* programName;
107
char* programName;
102
extern char buildtime[];
108
extern char buildtime[];
Lines 297-303 Link Here
297
303
298
    TXWindow::init(dpy, "Vncviewer");
304
    TXWindow::init(dpy, "Vncviewer");
299
    xloginIconifier.iconify(dpy);
305
    xloginIconifier.iconify(dpy);
300
    CConn cc(dpy, argc, argv, sock, vncServerName);
306
    CConn cc(dpy, argc, argv, sock, vncServerName, xineramaScreen);
301
307
302
    // X events are processed whenever reading from the socket would block.
308
    // X events are processed whenever reading from the socket would block.
303
309

Return to bug 136522