Accepting request 614564 from home:michalsrb:branches:bnc1095664:X11:XOrg
- U_vncviewer-Fix-fullscreen-scrolling.patch, U_vncviewer-Fix-scrollbar-visibility.patch * Fix scrolling in vncviewer. (boo#1095664) - Fix build against X server 1.20.0. OBS-URL: https://build.opensuse.org/request/show/614564 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/tigervnc?expand=0&rev=141
This commit is contained in:
parent
86d9648870
commit
ac2a93c3c8
37
U_vncviewer-Fix-fullscreen-scrolling.patch
Normal file
37
U_vncviewer-Fix-fullscreen-scrolling.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From e8d25d83463805c0f6ef623dba2ac9a276df3587 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Luke Shumaker <lukeshu@lukeshu.com>
|
||||||
|
Date: Tue, 23 May 2017 02:16:27 -0400
|
||||||
|
Subject: [PATCH] vncviewer: Fix fullscreen scrolling
|
||||||
|
|
||||||
|
---
|
||||||
|
vncviewer/DesktopWindow.cxx | 7 +------
|
||||||
|
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
|
||||||
|
index 47fe8f89..946b162c 100644
|
||||||
|
--- a/vncviewer/DesktopWindow.cxx
|
||||||
|
+++ b/vncviewer/DesktopWindow.cxx
|
||||||
|
@@ -1120,11 +1120,6 @@ void DesktopWindow::scrollTo(int x, int y)
|
||||||
|
hscroll->value(x);
|
||||||
|
vscroll->value(y);
|
||||||
|
|
||||||
|
- if (!hscroll->visible())
|
||||||
|
- x = -viewport->x();
|
||||||
|
- if (!vscroll->visible())
|
||||||
|
- y = -viewport->y();
|
||||||
|
-
|
||||||
|
// Scrollbar position results in inverse movement of
|
||||||
|
// the viewport widget
|
||||||
|
x = -x;
|
||||||
|
@@ -1189,7 +1184,7 @@ void DesktopWindow::handleEdgeScroll(void *data)
|
||||||
|
if ((dx == 0) && (dy == 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
- self->scrollTo(self->hscroll->value() + dx, self->vscroll->value() + dy);
|
||||||
|
+ self->scrollTo(self->hscroll->value() - dx, self->vscroll->value() - dy);
|
||||||
|
|
||||||
|
Fl::repeat_timeout(0.1, handleEdgeScroll, data);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.13.6
|
||||||
|
|
92
U_vncviewer-Fix-scrollbar-visibility.patch
Normal file
92
U_vncviewer-Fix-scrollbar-visibility.patch
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
From 0a8c4d48bbf71b83a575ec89b41aebc4439242ae Mon Sep 17 00:00:00 2001
|
||||||
|
From: Luke Shumaker <lukeshu@lukeshu.com>
|
||||||
|
Date: Tue, 23 May 2017 14:03:15 -0400
|
||||||
|
Subject: [PATCH] vncviewer: Fix scrollbar visibility
|
||||||
|
|
||||||
|
Have a window that is sized to the remote screen. Now shrink the window
|
||||||
|
vertically, making it shorter than the remote screen in one axis. The
|
||||||
|
vertical scrollbar appears. However, the horizontal scrollbar does not
|
||||||
|
appear, despite the rightmost ~24 pixels (Fl::scrollbar_size()) being
|
||||||
|
hidden by the vertical scroll bar.
|
||||||
|
|
||||||
|
Fix that.
|
||||||
|
|
||||||
|
For clarity, move the fullscreen checks into a separate `if` statement,
|
||||||
|
rather than keeping the size and fullscreen checks together.
|
||||||
|
|
||||||
|
I think the comment does a decent job of explaining and justifying the
|
||||||
|
check's logic, but if you require further convincing, perhaps this
|
||||||
|
alternate explanation will help:
|
||||||
|
|
||||||
|
The check for the X-axis is
|
||||||
|
|
||||||
|
if ((w() - (h() < viewport->h() ? Fl::scrollbar_size() : 0) < viewport->w())
|
||||||
|
|
||||||
|
To be a bit more verbose and repetitive, we can split that ternary in to
|
||||||
|
two separate checks, and add some comments:
|
||||||
|
|
||||||
|
if (
|
||||||
|
(w() - < viewport->w()) // X needs a scrollbar
|
||||||
|
||
|
||||||
|
( (w() - Fl::scrollbar_size() < viewport->w()) && (h() < viewport->h()) )
|
||||||
|
//( X doesn't need a scrollbar unless Y does ) && ( Y does need one ) )
|
||||||
|
)
|
||||||
|
|
||||||
|
Within the "Y does need one" check, we don't need to worry about the
|
||||||
|
case where `h() - Fl::scrollbar_size() < viewport-h()` is true,
|
||||||
|
because if both axes are saying "I don't need a scrollbar unless
|
||||||
|
you do", then neither needs one.
|
||||||
|
---
|
||||||
|
vncviewer/DesktopWindow.cxx | 34 +++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 27 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
|
||||||
|
index 47fe8f89..e2ed0887 100644
|
||||||
|
--- a/vncviewer/DesktopWindow.cxx
|
||||||
|
+++ b/vncviewer/DesktopWindow.cxx
|
||||||
|
@@ -1046,15 +1046,35 @@ void DesktopWindow::repositionWidgets()
|
||||||
|
|
||||||
|
// Scrollbars visbility
|
||||||
|
|
||||||
|
- if (!fullscreen_active() && (w() < viewport->w()))
|
||||||
|
- hscroll->show();
|
||||||
|
- else
|
||||||
|
+ if (fullscreen_active()) {
|
||||||
|
hscroll->hide();
|
||||||
|
-
|
||||||
|
- if (!fullscreen_active() && (h() < viewport->h()))
|
||||||
|
- vscroll->show();
|
||||||
|
- else
|
||||||
|
vscroll->hide();
|
||||||
|
+ } else {
|
||||||
|
+ // Decide whether to show a scrollbar by checking if the window
|
||||||
|
+ // size (possibly minus scrollbar_size) is less than the viewport
|
||||||
|
+ // (remote framebuffer) size.
|
||||||
|
+ //
|
||||||
|
+ // We decide whether to subtract scrollbar_size on an axis by
|
||||||
|
+ // checking if the other axis *definitely* needs a scrollbar. You
|
||||||
|
+ // might be tempted to think that this becomes a weird recursive
|
||||||
|
+ // problem, but it isn't: If the window size is less than the
|
||||||
|
+ // viewport size (without subtracting the scrollbar_size), then
|
||||||
|
+ // that axis *definitely* needs a scrollbar; if the check changes
|
||||||
|
+ // when we subtract scrollbar_size, then that axis only *maybe*
|
||||||
|
+ // needs a scrollbar. If both axes only "maybe" need a scrollbar,
|
||||||
|
+ // then neither does; so we don't need to recurse on the "maybe"
|
||||||
|
+ // cases.
|
||||||
|
+
|
||||||
|
+ if (w() - (h() < viewport->h() ? Fl::scrollbar_size() : 0) < viewport->w())
|
||||||
|
+ hscroll->show();
|
||||||
|
+ else
|
||||||
|
+ hscroll->hide();
|
||||||
|
+
|
||||||
|
+ if (h() - (w() < viewport->w() ? Fl::scrollbar_size() : 0) < viewport->h())
|
||||||
|
+ vscroll->show();
|
||||||
|
+ else
|
||||||
|
+ vscroll->hide();
|
||||||
|
+ }
|
||||||
|
|
||||||
|
// Scrollbars positions
|
||||||
|
|
||||||
|
--
|
||||||
|
2.13.6
|
||||||
|
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 6 09:07:23 UTC 2018 - msrb@suse.com
|
||||||
|
|
||||||
|
- U_vncviewer-Fix-fullscreen-scrolling.patch,
|
||||||
|
U_vncviewer-Fix-scrollbar-visibility.patch
|
||||||
|
* Fix scrolling in vncviewer. (boo#1095664)
|
||||||
|
|
||||||
|
- Fix build against X server 1.20.0.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Apr 24 09:16:59 UTC 2018 - msrb@suse.com
|
Tue Apr 24 09:16:59 UTC 2018 - msrb@suse.com
|
||||||
|
|
||||||
|
@ -141,6 +141,9 @@ Patch11: u_tigervnc-add-autoaccept-parameter.patch
|
|||||||
Patch12: u_Unset-pixel-buffer-when-x0vncserver-client-disconnect.patch
|
Patch12: u_Unset-pixel-buffer-when-x0vncserver-client-disconnect.patch
|
||||||
Patch13: tigervnc-1.8.0-nowindows.patch
|
Patch13: tigervnc-1.8.0-nowindows.patch
|
||||||
Patch14: u_change-button-layout-in-ServerDialog.patch
|
Patch14: u_change-button-layout-in-ServerDialog.patch
|
||||||
|
Patch15: u_add-support-for-X-server-1.20.0.patch
|
||||||
|
Patch16: U_vncviewer-Fix-fullscreen-scrolling.patch
|
||||||
|
Patch17: U_vncviewer-Fix-scrollbar-visibility.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
TigerVNC is an implementation of VNC (Virtual Network Computing), a
|
TigerVNC is an implementation of VNC (Virtual Network Computing), a
|
||||||
@ -246,9 +249,12 @@ cp -r /usr/src/xserver/* unix/xserver/
|
|||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
%patch14 -p1
|
%patch14 -p1
|
||||||
|
%patch15 -p1
|
||||||
|
%patch16 -p1
|
||||||
|
%patch17 -p1
|
||||||
|
|
||||||
pushd unix/xserver
|
pushd unix/xserver
|
||||||
patch -p1 < ../xserver119.patch
|
patch -p1 < ../xserver120.patch
|
||||||
popd
|
popd
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
139
u_add-support-for-X-server-1.20.0.patch
Normal file
139
u_add-support-for-X-server-1.20.0.patch
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
From 9529b2fbc248165da493422376d591f5ec736ca5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michal Srb <msrb@suse.com>
|
||||||
|
Date: Wed, 6 Jun 2018 13:33:37 +0200
|
||||||
|
Subject: [PATCH] Add support for X server 1.20.0.
|
||||||
|
|
||||||
|
---
|
||||||
|
unix/xserver/hw/vnc/xorg-version.h | 4 +-
|
||||||
|
unix/xserver/hw/vnc/xvnc.c | 2 +
|
||||||
|
unix/xserver120.patch | 82 ++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 87 insertions(+), 1 deletion(-)
|
||||||
|
create mode 100644 unix/xserver120.patch
|
||||||
|
|
||||||
|
diff --git a/unix/xserver/hw/vnc/xorg-version.h b/unix/xserver/hw/vnc/xorg-version.h
|
||||||
|
index 9d1c0eb8..16145711 100644
|
||||||
|
--- a/unix/xserver/hw/vnc/xorg-version.h
|
||||||
|
+++ b/unix/xserver/hw/vnc/xorg-version.h
|
||||||
|
@@ -52,8 +52,10 @@
|
||||||
|
#define XORG 118
|
||||||
|
#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (19 * 100000) + (99 * 1000))
|
||||||
|
#define XORG 119
|
||||||
|
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (20 * 100000) + (99 * 1000))
|
||||||
|
+#define XORG 120
|
||||||
|
#else
|
||||||
|
-#error "X.Org newer than 1.19 is not supported"
|
||||||
|
+#error "X.Org newer than 1.20 is not supported"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c
|
||||||
|
index 57152cd5..06b6da5d 100644
|
||||||
|
--- a/unix/xserver/hw/vnc/xvnc.c
|
||||||
|
+++ b/unix/xserver/hw/vnc/xvnc.c
|
||||||
|
@@ -202,6 +202,7 @@ vfbBitsPerPixel(int depth)
|
||||||
|
static void vfbFreeFramebufferMemory(vfbFramebufferInfoPtr pfb);
|
||||||
|
|
||||||
|
#ifdef DPMSExtension
|
||||||
|
+#if XORG < 120
|
||||||
|
/* Why support DPMS? Because stupid modern desktop environments
|
||||||
|
such as Unity 2D on Ubuntu 11.10 crashes if DPMS is not
|
||||||
|
available. (DPMSSet is called by dpms.c, but the return value
|
||||||
|
@@ -218,6 +219,7 @@ Bool DPMSSupported(void)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#if XORG < 111
|
||||||
|
void ddxGiveUp()
|
||||||
|
diff --git a/unix/xserver120.patch b/unix/xserver120.patch
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..d8598494
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/unix/xserver120.patch
|
||||||
|
@@ -0,0 +1,82 @@
|
||||||
|
+Index: xserver/configure.ac
|
||||||
|
+===================================================================
|
||||||
|
+--- xserver.orig/configure.ac
|
||||||
|
++++ xserver/configure.ac
|
||||||
|
+@@ -74,6 +74,7 @@ dnl forcing an entire recompile.x
|
||||||
|
+ AC_CONFIG_HEADERS(include/version-config.h)
|
||||||
|
+
|
||||||
|
+ AM_PROG_AS
|
||||||
|
++AC_PROG_CXX
|
||||||
|
+ AC_PROG_LN_S
|
||||||
|
+ LT_PREREQ([2.2])
|
||||||
|
+ LT_INIT([disable-static win32-dll])
|
||||||
|
+@@ -1777,6 +1778,10 @@ if test "x$XVFB" = xyes; then
|
||||||
|
+ AC_SUBST([XVFB_SYS_LIBS])
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
++dnl Xvnc DDX
|
||||||
|
++AC_SUBST([XVNC_CPPFLAGS], ["-DHAVE_DIX_CONFIG_H $XSERVER_CFLAGS"])
|
||||||
|
++AC_SUBST([XVNC_LIBS], ["$FB_LIB $FIXES_LIB $XEXT_LIB $CONFIG_LIB $DBE_LIB $RECORD_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $DRI3_LIB $PRESENT_LIB $MIEXT_SYNC_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $MAIN_LIB"])
|
||||||
|
++AC_SUBST([XVNC_SYS_LIBS], ["$GLX_SYS_LIBS"])
|
||||||
|
+
|
||||||
|
+ dnl Xnest DDX
|
||||||
|
+
|
||||||
|
+@@ -1812,6 +1817,8 @@ if test "x$XORG" = xauto; then
|
||||||
|
+ fi
|
||||||
|
+ AC_MSG_RESULT([$XORG])
|
||||||
|
+
|
||||||
|
++AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
|
||||||
|
++
|
||||||
|
+ if test "x$XORG" = xyes; then
|
||||||
|
+ XORG_DDXINCS='-I$(top_srcdir)/hw/xfree86 -I$(top_srcdir)/hw/xfree86/include -I$(top_srcdir)/hw/xfree86/common'
|
||||||
|
+ XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
|
||||||
|
+@@ -2029,7 +2036,6 @@ if test "x$XORG" = xyes; then
|
||||||
|
+ AC_DEFINE(XORG_SERVER, 1, [Building Xorg server])
|
||||||
|
+ AC_DEFINE(XORGSERVER, 1, [Building Xorg server])
|
||||||
|
+ AC_DEFINE(XFree86Server, 1, [Building XFree86 server])
|
||||||
|
+- AC_DEFINE_UNQUOTED(XORG_VERSION_CURRENT, [$VENDOR_RELEASE], [Current Xorg version])
|
||||||
|
+ AC_DEFINE(NEED_XF86_TYPES, 1, [Need XFree86 typedefs])
|
||||||
|
+ AC_DEFINE(NEED_XF86_PROTOTYPES, 1, [Need XFree86 helper functions])
|
||||||
|
+ AC_DEFINE(__XSERVERNAME__, "Xorg", [Name of X server])
|
||||||
|
+@@ -2565,6 +2571,7 @@ hw/dmx/Makefile
|
||||||
|
+ hw/dmx/man/Makefile
|
||||||
|
+ hw/vfb/Makefile
|
||||||
|
+ hw/vfb/man/Makefile
|
||||||
|
++hw/vnc/Makefile
|
||||||
|
+ hw/xnest/Makefile
|
||||||
|
+ hw/xnest/man/Makefile
|
||||||
|
+ hw/xwin/Makefile
|
||||||
|
+Index: xserver/hw/Makefile.am
|
||||||
|
+===================================================================
|
||||||
|
+--- xserver.orig/hw/Makefile.am
|
||||||
|
++++ xserver/hw/Makefile.am
|
||||||
|
+@@ -38,7 +38,8 @@ SUBDIRS = \
|
||||||
|
+ $(DMX_SUBDIRS) \
|
||||||
|
+ $(KDRIVE_SUBDIRS) \
|
||||||
|
+ $(XQUARTZ_SUBDIRS) \
|
||||||
|
+- $(XWAYLAND_SUBDIRS)
|
||||||
|
++ $(XWAYLAND_SUBDIRS) \
|
||||||
|
++ vnc
|
||||||
|
+
|
||||||
|
+ DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive xwayland
|
||||||
|
+
|
||||||
|
+Index: xserver/mi/miinitext.c
|
||||||
|
+===================================================================
|
||||||
|
+--- xserver.orig/mi/miinitext.c
|
||||||
|
++++ xserver/mi/miinitext.c
|
||||||
|
+@@ -107,8 +107,15 @@ SOFTWARE.
|
||||||
|
+ #include "os.h"
|
||||||
|
+ #include "globals.h"
|
||||||
|
+
|
||||||
|
++#ifdef TIGERVNC
|
||||||
|
++extern void vncExtensionInit(void);
|
||||||
|
++#endif
|
||||||
|
++
|
||||||
|
+ /* List of built-in (statically linked) extensions */
|
||||||
|
+ static const ExtensionModule staticExtensions[] = {
|
||||||
|
++#ifdef TIGERVNC
|
||||||
|
++ {vncExtensionInit, "VNC-EXTENSION", NULL},
|
||||||
|
++#endif
|
||||||
|
+ {GEExtensionInit, "Generic Event Extension", &noGEExtension},
|
||||||
|
+ {ShapeExtensionInit, "SHAPE", NULL},
|
||||||
|
+ #ifdef MITSHM
|
||||||
|
--
|
||||||
|
2.13.6
|
||||||
|
|
Loading…
Reference in New Issue
Block a user