0e1e01a399
- Update touch patch to upstream version (from fdo #66720) - re-add xephyr resizable patch, got lost in rebase (#976995)
152 lines
5.6 KiB
Diff
152 lines
5.6 KiB
Diff
From 3aac7a59dc6ef2d8bbf46ba5d37acdf6013e9450 Mon Sep 17 00:00:00 2001
|
|
From: Daniel Martin <daniel.martin@secunet.com>
|
|
Date: Tue, 11 Dec 2012 17:23:55 +0100
|
|
Subject: [PATCH] ephyr: Add -resizeable option
|
|
|
|
With this option passed, ephyr windows can be resized like normal
|
|
windows on the fly, without the need of an explicit parent window.
|
|
|
|
Signed-off-by: Daniel Martin <daniel.martin@secunet.com>
|
|
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
---
|
|
hw/kdrive/ephyr/ephyr.c | 1 +
|
|
hw/kdrive/ephyr/ephyrinit.c | 6 ++++++
|
|
hw/kdrive/ephyr/hostx.c | 32 +++++++++++++++++++++-----------
|
|
3 files changed, 28 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
|
|
index e6520d0..f32e432 100644
|
|
--- a/hw/kdrive/ephyr/ephyr.c
|
|
+++ b/hw/kdrive/ephyr/ephyr.c
|
|
@@ -56,6 +56,7 @@ typedef struct _EphyrInputPrivate {
|
|
} EphyrKbdPrivate, EphyrPointerPrivate;
|
|
|
|
Bool EphyrWantGrayScale = 0;
|
|
+Bool EphyrWantResize = 0;
|
|
|
|
Bool
|
|
ephyrInitialize(KdCardInfo * card, EphyrPriv * priv)
|
|
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
|
|
index 5e2eb67..adacac9 100644
|
|
--- a/hw/kdrive/ephyr/ephyrinit.c
|
|
+++ b/hw/kdrive/ephyr/ephyrinit.c
|
|
@@ -31,6 +31,7 @@
|
|
|
|
extern Window EphyrPreExistingHostWin;
|
|
extern Bool EphyrWantGrayScale;
|
|
+extern Bool EphyrWantResize;
|
|
extern Bool kdHasPointer;
|
|
extern Bool kdHasKbd;
|
|
|
|
@@ -116,6 +117,7 @@ ddxUseMsg(void)
|
|
ErrorF("-host-cursor Re-use exisiting X host server cursor\n");
|
|
ErrorF("-fullscreen Attempt to run Xephyr fullscreen\n");
|
|
ErrorF("-grayscale Simulate 8bit grayscale\n");
|
|
+ ErrorF("-resizeable Make Xephyr windows resizeable\n");
|
|
ErrorF
|
|
("-fakexa Simulate acceleration using software rendering\n");
|
|
ErrorF("-verbosity <level> Set log verbosity level\n");
|
|
@@ -210,6 +212,10 @@ ddxProcessArgument(int argc, char **argv, int i)
|
|
EphyrWantGrayScale = 1;
|
|
return 1;
|
|
}
|
|
+ else if (!strcmp(argv[i], "-resizeable")) {
|
|
+ EphyrWantResize = 1;
|
|
+ return 1;
|
|
+ }
|
|
else if (!strcmp(argv[i], "-fakexa")) {
|
|
ephyrFuncs.initAccel = ephyrDrawInit;
|
|
ephyrFuncs.enableAccel = ephyrDrawEnable;
|
|
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
|
|
index aed0285..c8642cb 100644
|
|
--- a/hw/kdrive/ephyr/hostx.c
|
|
+++ b/hw/kdrive/ephyr/hostx.c
|
|
@@ -117,6 +117,8 @@ extern EphyrKeySyms ephyrKeySyms;
|
|
|
|
extern int monitorResolution;
|
|
|
|
+extern Bool EphyrWantResize;
|
|
+
|
|
char *ephyrResName = NULL;
|
|
int ephyrResNameFromCmd = 0;
|
|
char *ephyrTitle = NULL;
|
|
@@ -697,7 +699,7 @@ hostx_screen_init(EphyrScreenInfo screen,
|
|
XResizeWindow(HostX.dpy, host_screen->win, width, height);
|
|
|
|
/* Ask the WM to keep our size static */
|
|
- if (host_screen->win_pre_existing == None) {
|
|
+ if (host_screen->win_pre_existing == None && !EphyrWantResize) {
|
|
size_hints = XAllocSizeHints();
|
|
size_hints->max_width = size_hints->min_width = width;
|
|
size_hints->max_height = size_hints->min_height = height;
|
|
@@ -1012,19 +1014,27 @@ hostx_get_event(EphyrHostXEvent * ev)
|
|
|
|
case ConfigureNotify:
|
|
{
|
|
- struct EphyrHostScreen *host_screen =
|
|
- host_screen_from_window(xev.xconfigure.window);
|
|
+ struct EphyrHostScreen *host_screen;
|
|
|
|
- if (host_screen && host_screen->win_pre_existing != None) {
|
|
- ev->type = EPHYR_EV_CONFIGURE;
|
|
- ev->data.configure.width = xev.xconfigure.width;
|
|
- ev->data.configure.height = xev.xconfigure.height;
|
|
- ev->data.configure.window = xev.xconfigure.window;
|
|
- ev->data.configure.screen = host_screen->mynum;
|
|
- return 1;
|
|
+ /* event compression as for Expose events, cause
|
|
+ * we don't want to resize the framebuffer for
|
|
+ * every single change */
|
|
+ while (XCheckTypedWindowEvent(HostX.dpy, xev.xconfigure.window,
|
|
+ ConfigureNotify, &xev));
|
|
+ host_screen = host_screen_from_window(xev.xconfigure.window);
|
|
+
|
|
+ if (!host_screen ||
|
|
+ (host_screen->win_pre_existing == None && !EphyrWantResize)) {
|
|
+ return 0;
|
|
}
|
|
|
|
- return 0;
|
|
+ ev->type = EPHYR_EV_CONFIGURE;
|
|
+ ev->data.configure.width = xev.xconfigure.width;
|
|
+ ev->data.configure.height = xev.xconfigure.height;
|
|
+ ev->data.configure.window = xev.xconfigure.window;
|
|
+ ev->data.configure.screen = host_screen->mynum;
|
|
+
|
|
+ return 1;
|
|
}
|
|
default:
|
|
break;
|
|
--
|
|
1.8.2.1
|
|
|
|
From 49521edaf8930b335afac2185209e26e7000820b Mon Sep 17 00:00:00 2001
|
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Date: Wed, 15 May 2013 08:51:51 +1000
|
|
Subject: [PATCH] ephyr: add -resizeable to the man page
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
|
---
|
|
hw/kdrive/ephyr/man/Xephyr.man | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/hw/kdrive/ephyr/man/Xephyr.man b/hw/kdrive/ephyr/man/Xephyr.man
|
|
index 792511b..f14f6c8 100644
|
|
--- a/hw/kdrive/ephyr/man/Xephyr.man
|
|
+++ b/hw/kdrive/ephyr/man/Xephyr.man
|
|
@@ -59,6 +59,10 @@ set 'cursor acceleration':
|
|
The host's cursor is reused. This is only really there to aid
|
|
debugging by avoiding server paints for the cursor. Performance
|
|
improvement is negligible.
|
|
+.TP 8
|
|
+.B -resizeable
|
|
+Allow the Xephyr window to be resized, even if not embedded into a parent
|
|
+window. By default, the Xephyr window has a fixed size.
|
|
.SH "SIGNALS"
|
|
Send a SIGUSR1 to the server (e.g. pkill -USR1 Xephyr) to
|
|
toggle the debugging mode.
|
|
--
|
|
1.8.2.1
|