aboutsummaryrefslogtreecommitdiff
path: root/xorg-server
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-05-18 14:43:25 +0200
committermarha <marha@users.sourceforge.net>2014-05-18 14:43:25 +0200
commita27ca45b676116ebbce31973bc1a319cad76ffbf (patch)
tree098711ced704936739bc91abbd75942a815d89db /xorg-server
parent0b89941658d6117d17555ee28c6e5d7715673705 (diff)
parent55cf29d7f748b814a2b8eb016fbf15635d56aa53 (diff)
downloadvcxsrv-a27ca45b676116ebbce31973bc1a319cad76ffbf.tar.gz
vcxsrv-a27ca45b676116ebbce31973bc1a319cad76ffbf.tar.bz2
vcxsrv-a27ca45b676116ebbce31973bc1a319cad76ffbf.zip
Merge remote-tracking branch 'origin/released'
Conflicts: mesalib/src/glsl/builtin_functions.cpp
Diffstat (limited to 'xorg-server')
-rw-r--r--xorg-server/Xi/exevents.c16
-rw-r--r--xorg-server/config/config.c6
-rw-r--r--xorg-server/glamor/glamor_priv.h3
-rw-r--r--xorg-server/glamor/glamor_segment.c11
-rw-r--r--xorg-server/hw/xfree86/common/xf86Bus.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86Config.c34
-rw-r--r--xorg-server/hw/xfree86/common/xf86Xinput.c9
-rw-r--r--xorg-server/hw/xfree86/common/xf86platformBus.c3
-rw-r--r--xorg-server/hw/xfree86/man/xorg.conf.man24
-rw-r--r--xorg-server/hw/xfree86/os-support/linux/lnx_platform.c2
-rw-r--r--xorg-server/hw/xfree86/os-support/linux/systemd-logind.c7
-rw-r--r--xorg-server/hw/xfree86/parser/Device.c6
-rw-r--r--xorg-server/hw/xfree86/parser/Layout.c6
-rw-r--r--xorg-server/hw/xfree86/parser/Screen.c6
-rw-r--r--xorg-server/hw/xfree86/parser/xf86Parser.h3
-rw-r--r--xorg-server/hw/xfree86/parser/xf86tokens.h1
-rw-r--r--xorg-server/include/systemd-logind.h4
-rw-r--r--xorg-server/mi/miwindow.c2
-rw-r--r--xorg-server/randr/rrcrtc.c7
-rw-r--r--xorg-server/xkeyboard-config/rules/base.extras.xml.in12
-rw-r--r--xorg-server/xkeyboard-config/rules/base.xml.in11
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lv_c.part1
-rw-r--r--xorg-server/xkeyboard-config/symbols/al64
-rw-r--r--xorg-server/xkeyboard-config/symbols/de56
-rw-r--r--xorg-server/xkeyboard-config/symbols/ru2
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/de10
30 files changed, 266 insertions, 48 deletions
diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c
index 33a280d3f..5b50fd58e 100644
--- a/xorg-server/Xi/exevents.c
+++ b/xorg-server/Xi/exevents.c
@@ -1471,7 +1471,7 @@ static void
DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
InternalEvent *ev)
{
- InternalEvent motion;
+ DeviceEvent motion;
if (ti->num_listeners) {
ClientPtr client;
@@ -1483,11 +1483,11 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
ti->listeners[0].type != LISTENER_POINTER_GRAB)
return;
- motion = *ev;
- motion.any.type = ET_TouchUpdate;
- motion.device_event.detail.button = 0;
+ motion = ev->device_event;
+ motion.type = ET_TouchUpdate;
+ motion.detail.button = 0;
- if (!RetrieveTouchDeliveryData(dev, ti, &motion,
+ if (!RetrieveTouchDeliveryData(dev, ti, (InternalEvent*)&motion,
&ti->listeners[0], &client, &win, &grab,
&mask))
return;
@@ -1502,18 +1502,18 @@ DeliverEmulatedMotionEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
}
}
- DeliverTouchEmulatedEvent(dev, ti, &motion, &ti->listeners[0], client,
+ DeliverTouchEmulatedEvent(dev, ti, (InternalEvent*)&motion, &ti->listeners[0], client,
win, grab, mask);
}
else {
InternalEvent button;
int converted;
- converted = TouchConvertToPointerEvent(ev, &motion, &button);
+ converted = TouchConvertToPointerEvent(ev, (InternalEvent*)&motion, &button);
BUG_WARN(converted == 0);
if (converted)
- ProcessOtherEvent(&motion, dev);
+ ProcessOtherEvent((InternalEvent*)&motion, dev);
}
}
diff --git a/xorg-server/config/config.c b/xorg-server/config/config.c
index 97b621b89..52fc80836 100644
--- a/xorg-server/config/config.c
+++ b/xorg-server/config/config.c
@@ -250,8 +250,6 @@ config_odev_free_attributes(struct OdevAttributes *attribs)
free(iter);
}
- if (fd != -1) {
- systemd_logind_release_fd(major, minor);
- close(fd);
- }
+ if (fd != -1)
+ systemd_logind_release_fd(major, minor, fd);
}
diff --git a/xorg-server/glamor/glamor_priv.h b/xorg-server/glamor/glamor_priv.h
index 96635be39..c56c55973 100644
--- a/xorg-server/glamor/glamor_priv.h
+++ b/xorg-server/glamor/glamor_priv.h
@@ -30,9 +30,6 @@
#include "dix-config.h"
#include <xorg-server.h>
-#ifndef DEBUG
-#define NDEBUG
-#endif
#include "glamor.h"
#include <epoxy/gl.h>
diff --git a/xorg-server/glamor/glamor_segment.c b/xorg-server/glamor/glamor_segment.c
index 84b27acce..53f7da0cb 100644
--- a/xorg-server/glamor/glamor_segment.c
+++ b/xorg-server/glamor/glamor_segment.c
@@ -26,14 +26,19 @@ Bool
glamor_poly_segment_nf(DrawablePtr drawable, GCPtr gc, int nseg,
xSegment *seg)
{
- return FALSE;
+ if (glamor_ddx_fallback_check_pixmap(drawable) &&
+ glamor_ddx_fallback_check_gc(gc)) {
+ return FALSE;
+ }
+
+ miPolySegment(drawable, gc, nseg, seg);
+
+ return TRUE;
}
void
glamor_poly_segment(DrawablePtr drawable, GCPtr gc, int nseg,
xSegment *seg)
{
- if (glamor_poly_segment_nf(drawable, gc, nseg, seg))
- return;
miPolySegment(drawable, gc, nseg, seg);
}
diff --git a/xorg-server/hw/xfree86/common/xf86Bus.c b/xorg-server/hw/xfree86/common/xf86Bus.c
index 507c57dbc..b3b3f8cc5 100644
--- a/xorg-server/hw/xfree86/common/xf86Bus.c
+++ b/xorg-server/hw/xfree86/common/xf86Bus.c
@@ -81,7 +81,7 @@ xf86CallDriverProbe(DriverPtr drv, Bool detect_only)
if (drv->platformProbe != NULL) {
foundScreen = xf86platformProbeDev(drv);
}
- if (ServerIsNotSeat0())
+ if (ServerIsNotSeat0() && foundScreen)
return foundScreen;
#endif
@@ -201,7 +201,7 @@ xf86BusProbe(void)
{
#ifdef XSERVER_PLATFORM_BUS
xf86platformProbe();
- if (ServerIsNotSeat0())
+ if (ServerIsNotSeat0() && xf86_num_platform_devices > 0)
return;
#endif
#ifdef XSERVER_LIBPCIACCESS
diff --git a/xorg-server/hw/xfree86/common/xf86Config.c b/xorg-server/hw/xfree86/common/xf86Config.c
index 542d5abf6..2adef44c3 100644
--- a/xorg-server/hw/xfree86/common/xf86Config.c
+++ b/xorg-server/hw/xfree86/common/xf86Config.c
@@ -232,6 +232,18 @@ xf86ValidateFontPath(char *path)
return tmp_path;
}
+#define FIND_SUITABLE(pointertype, listhead, ptr) \
+ do { \
+ pointertype _l, _p; \
+ \
+ for (_l = (listhead), _p = NULL; !_p && _l; _l = (pointertype)_l->list.next) { \
+ if (!_l->match_seat || (SeatId && xf86nameCompare(_l->match_seat, SeatId) == 0)) \
+ _p = _l; \
+ } \
+ \
+ (ptr) = _p; \
+ } while(0)
+
/*
* use the datastructure that the parser provides and pick out the parts
* that we need at this point
@@ -1580,8 +1592,11 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
* config file, or - if it is NULL - configScreen autogenerates one for
* us */
if (!count) {
+ XF86ConfScreenPtr screen;
+
+ FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen);
slp[0].screen = xnfcalloc(1, sizeof(confScreenRec));
- if (!configScreen(slp[0].screen, xf86configptr->conf_screen_lst,
+ if (!configScreen(slp[0].screen, screen,
0, X_CONFIG)) {
free(slp[0].screen);
free(slp);
@@ -1821,7 +1836,7 @@ configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
* set it to NULL so that the section can be autoconfigured later */
screenp->device = xnfcalloc(1, sizeof(GDevRec));
if ((!conf_screen->scrn_device) && (xf86configptr->conf_device_lst)) {
- conf_screen->scrn_device = xf86configptr->conf_device_lst;
+ FIND_SUITABLE (XF86ConfDevicePtr, xf86configptr->conf_device_lst, conf_screen->scrn_device);
xf86Msg(X_DEFAULT, "No device specified for screen \"%s\".\n"
"\tUsing the first device section listed.\n", screenp->id);
}
@@ -2354,6 +2369,7 @@ xf86HandleConfigFile(Bool autoconfig)
const char *scanptr;
Bool singlecard = 0;
Bool implicit_layout = FALSE;
+ XF86ConfLayoutPtr layout;
if (!autoconfig) {
char *filename, *dirname, *sysdirname;
@@ -2429,14 +2445,17 @@ xf86HandleConfigFile(Bool autoconfig)
*/
/* First check if a layout section is present, and if it is valid. */
+ FIND_SUITABLE(XF86ConfLayoutPtr, xf86configptr->conf_layout_lst, layout);
+ if (layout == NULL || xf86ScreenName != NULL) {
+ XF86ConfScreenPtr screen;
- if (xf86configptr->conf_layout_lst == NULL || xf86ScreenName != NULL) {
if (xf86ScreenName == NULL) {
xf86Msg(X_DEFAULT,
"No Layout section. Using the first Screen section.\n");
}
+ FIND_SUITABLE (XF86ConfScreenPtr, xf86configptr->conf_screen_lst, screen);
if (!configImpliedLayout(&xf86ConfigLayout,
- xf86configptr->conf_screen_lst,
+ screen,
xf86configptr)) {
xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
return CONFIG_PARSE_ERROR;
@@ -2451,16 +2470,13 @@ xf86HandleConfigFile(Bool autoconfig)
if (optlist && xf86FindOption(optlist, "defaultserverlayout"))
dfltlayout =
xf86SetStrOption(optlist, "defaultserverlayout", NULL);
- if (!configLayout
- (&xf86ConfigLayout, xf86configptr->conf_layout_lst,
- dfltlayout)) {
+ if (!configLayout(&xf86ConfigLayout, layout, dfltlayout)) {
xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
return CONFIG_PARSE_ERROR;
}
}
else {
- if (!configLayout(&xf86ConfigLayout, xf86configptr->conf_layout_lst,
- NULL)) {
+ if (!configLayout(&xf86ConfigLayout, layout, NULL)) {
xf86Msg(X_ERROR, "Unable to determine the screen layout\n");
return CONFIG_PARSE_ERROR;
}
diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c
index bc6b73f91..4e8060b0f 100644
--- a/xorg-server/hw/xfree86/common/xf86Xinput.c
+++ b/xorg-server/hw/xfree86/common/xf86Xinput.c
@@ -770,10 +770,8 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
FreeInputAttributes(pInp->attrs);
- if (pInp->flags & XI86_SERVER_FD) {
- systemd_logind_release_fd(pInp->major, pInp->minor);
- close(pInp->fd);
- }
+ if (pInp->flags & XI86_SERVER_FD)
+ systemd_logind_release_fd(pInp->major, pInp->minor, pInp->fd);
/* Remove the entry from the list. */
if (pInp == xf86InputDevs)
@@ -873,8 +871,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)
sizeof(pInfo) * (new_input_devices_count + 1));
new_input_devices[new_input_devices_count] = pInfo;
new_input_devices_count++;
- systemd_logind_release_fd(pInfo->major, pInfo->minor);
- close(fd);
+ systemd_logind_release_fd(pInfo->major, pInfo->minor, fd);
return BadMatch;
}
pInfo->fd = fd;
diff --git a/xorg-server/hw/xfree86/common/xf86platformBus.c b/xorg-server/hw/xfree86/common/xf86platformBus.c
index 4e80f9ee3..dd118a285 100644
--- a/xorg-server/hw/xfree86/common/xf86platformBus.c
+++ b/xorg-server/hw/xfree86/common/xf86platformBus.c
@@ -340,8 +340,7 @@ static Bool doPlatformProbe(struct xf86_platform_device *dev, DriverPtr drvp,
fd = xf86_get_platform_device_int_attrib(dev, ODEV_ATTRIB_FD, -1);
major = xf86_get_platform_device_int_attrib(dev, ODEV_ATTRIB_MAJOR, 0);
minor = xf86_get_platform_device_int_attrib(dev, ODEV_ATTRIB_MINOR, 0);
- systemd_logind_release_fd(major, minor);
- close(fd);
+ systemd_logind_release_fd(major, minor, fd);
config_odev_add_int_attribute(dev->attribs, ODEV_ATTRIB_FD, -1);
dev->flags &= ~XF86_PDEV_SERVER_FD;
}
diff --git a/xorg-server/hw/xfree86/man/xorg.conf.man b/xorg-server/hw/xfree86/man/xorg.conf.man
index 6d2652e84..cadd87b7b 100644
--- a/xorg-server/hw/xfree86/man/xorg.conf.man
+++ b/xorg-server/hw/xfree86/man/xorg.conf.man
@@ -1378,6 +1378,14 @@ for the regular text mode.
The frequency is specified in MHz.
This is rarely used.
.TP 7
+.BI "MatchSeat " "seat\-id"
+Only apply this
+.B Device
+section if X server was started with
+.B -seat
+.I seat\-id
+option.
+.TP 7
.BI "Option \*qModeDebug\*q \*q" boolean \*q
Enable printing of additional debugging information about modesetting to
the server log.
@@ -1900,6 +1908,14 @@ The only case where there is even a choice in this value is for depth 24,
where some hardware supports both a packed 24 bit framebuffer layout and a
sparse 32 bit framebuffer layout.
.TP 7
+.BI "MatchSeat " "seat\-id"
+Only apply this
+.B Screen
+section if X server was started with
+.B -seat
+.I seat\-id
+option.
+.TP 7
.B Options
Various
.B Option
@@ -2295,6 +2311,14 @@ and the first two should normally be used to indicate the core pointer
and core keyboard devices respectively.
.RE
.TP 7
+.BI "MatchSeat " "seat\-id"
+Only apply this
+.B ServerLayout
+section if X server was started with
+.B -seat
+.I seat\-id
+option.
+.TP 7
.B Options
In addition to the following, any option permitted in the
.B ServerFlags
diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_platform.c b/xorg-server/hw/xfree86/os-support/linux/lnx_platform.c
index dbd7aa0aa..308275ab4 100644
--- a/xorg-server/hw/xfree86/os-support/linux/lnx_platform.c
+++ b/xorg-server/hw/xfree86/os-support/linux/lnx_platform.c
@@ -37,7 +37,7 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
if (paused) {
LogMessage(X_ERROR,
"Error systemd-logind returned paused fd for drm node\n");
- systemd_logind_release_fd(major, minor);
+ systemd_logind_release_fd(major, minor, -1);
return FALSE;
}
config_odev_add_int_attribute(attribs, ODEV_ATTRIB_FD, fd);
diff --git a/xorg-server/hw/xfree86/os-support/linux/systemd-logind.c b/xorg-server/hw/xfree86/os-support/linux/systemd-logind.c
index ed670a88c..73a8d55bf 100644
--- a/xorg-server/hw/xfree86/os-support/linux/systemd-logind.c
+++ b/xorg-server/hw/xfree86/os-support/linux/systemd-logind.c
@@ -162,7 +162,7 @@ cleanup:
}
void
-systemd_logind_release_fd(int _major, int _minor)
+systemd_logind_release_fd(int _major, int _minor, int fd)
{
struct systemd_logind_info *info = &logind_info;
InputInfoPtr pInfo;
@@ -174,7 +174,7 @@ systemd_logind_release_fd(int _major, int _minor)
int matches = 0;
if (!info->session || major == 0)
- return;
+ goto close;
/* Only release the fd if there is only 1 InputInfo left for this major
* and minor, otherwise other InputInfo's are still referencing the fd. */
@@ -218,6 +218,9 @@ cleanup:
if (reply)
dbus_message_unref(reply);
dbus_error_free(&error);
+close:
+ if (fd != -1)
+ close(fd);
}
int
diff --git a/xorg-server/hw/xfree86/parser/Device.c b/xorg-server/hw/xfree86/parser/Device.c
index 073171f22..d3ac29351 100644
--- a/xorg-server/hw/xfree86/parser/Device.c
+++ b/xorg-server/hw/xfree86/parser/Device.c
@@ -71,6 +71,7 @@ xf86ConfigSymTabRec DeviceTab[] = {
{RAMDAC, "ramdac"},
{DACSPEED, "dacspeed"},
{CLOCKS, "clocks"},
+ {MATCHSEAT, "matchseat"},
{OPTION, "option"},
{VIDEORAM, "videoram"},
{BIOSBASE, "biosbase"},
@@ -216,6 +217,11 @@ xf86parseDeviceSection(void)
Error(NUMBER_MSG, "TextClockFreq");
ptr->dev_textclockfreq = (int) (xf86_lex_val.realnum * 1000.0 + 0.5);
break;
+ case MATCHSEAT:
+ if (xf86getSubToken(&(ptr->dev_comment)) != STRING)
+ Error(QUOTE_MSG, "MatchSeat");
+ ptr->match_seat = xf86_lex_val.str;
+ break;
case OPTION:
ptr->dev_option_lst = xf86parseOption(ptr->dev_option_lst);
break;
diff --git a/xorg-server/hw/xfree86/parser/Layout.c b/xorg-server/hw/xfree86/parser/Layout.c
index 7be746f04..994b31ae4 100644
--- a/xorg-server/hw/xfree86/parser/Layout.c
+++ b/xorg-server/hw/xfree86/parser/Layout.c
@@ -70,6 +70,7 @@ static xf86ConfigSymTabRec LayoutTab[] = {
{ENDSECTION, "endsection"},
{SCREEN, "screen"},
{IDENTIFIER, "identifier"},
+ {MATCHSEAT, "matchseat"},
{INACTIVE, "inactive"},
{INPUTDEVICE, "inputdevice"},
{OPTION, "option"},
@@ -109,6 +110,11 @@ xf86parseLayoutSection(void)
ptr->lay_identifier = xf86_lex_val.str;
has_ident = TRUE;
break;
+ case MATCHSEAT:
+ if (xf86getSubToken(&(ptr->lay_comment)) != STRING)
+ Error(QUOTE_MSG, "MatchSeat");
+ ptr->match_seat = xf86_lex_val.str;
+ break;
case INACTIVE:
{
XF86ConfInactivePtr iptr;
diff --git a/xorg-server/hw/xfree86/parser/Screen.c b/xorg-server/hw/xfree86/parser/Screen.c
index fecd57c0c..0e9746ae5 100644
--- a/xorg-server/hw/xfree86/parser/Screen.c
+++ b/xorg-server/hw/xfree86/parser/Screen.c
@@ -198,6 +198,7 @@ xf86parseDisplaySubSection(void)
static xf86ConfigSymTabRec ScreenTab[] = {
{ENDSECTION, "endsection"},
{IDENTIFIER, "identifier"},
+ {MATCHSEAT, "matchseat"},
{OBSDRIVER, "driver"},
{MDEVICE, "device"},
{MONITOR, "monitor"},
@@ -236,6 +237,11 @@ xf86parseScreenSection(void)
Error(ONLY_ONE_MSG, "Identifier or Driver");
has_ident = TRUE;
break;
+ case MATCHSEAT:
+ if (xf86getSubToken(&(ptr->scrn_comment)) != STRING)
+ Error(QUOTE_MSG, "MatchSeat");
+ ptr->match_seat = xf86_lex_val.str;
+ break;
case OBSDRIVER:
if (xf86getSubToken(&(ptr->scrn_comment)) != STRING)
Error(QUOTE_MSG, "Driver");
diff --git a/xorg-server/hw/xfree86/parser/xf86Parser.h b/xorg-server/hw/xfree86/parser/xf86Parser.h
index 8f855ac09..c95423a1f 100644
--- a/xorg-server/hw/xfree86/parser/xf86Parser.h
+++ b/xorg-server/hw/xfree86/parser/xf86Parser.h
@@ -224,6 +224,7 @@ typedef struct {
int dev_screen;
XF86OptionPtr dev_option_lst;
char *dev_comment;
+ char *match_seat;
} XF86ConfDeviceRec, *XF86ConfDevicePtr;
typedef struct {
@@ -275,6 +276,7 @@ typedef struct {
XF86OptionPtr scrn_option_lst;
char *scrn_comment;
int scrn_virtualX, scrn_virtualY;
+ char *match_seat;
} XF86ConfScreenRec, *XF86ConfScreenPtr;
typedef struct {
@@ -366,6 +368,7 @@ typedef struct {
XF86ConfInactivePtr lay_inactive_lst;
XF86ConfInputrefPtr lay_input_lst;
XF86OptionPtr lay_option_lst;
+ char *match_seat;
char *lay_comment;
} XF86ConfLayoutRec, *XF86ConfLayoutPtr;
diff --git a/xorg-server/hw/xfree86/parser/xf86tokens.h b/xorg-server/hw/xfree86/parser/xf86tokens.h
index f751b7b0e..5c01ce701 100644
--- a/xorg-server/hw/xfree86/parser/xf86tokens.h
+++ b/xorg-server/hw/xfree86/parser/xf86tokens.h
@@ -87,6 +87,7 @@ typedef enum {
VENDOR,
DASH,
COMMA,
+ MATCHSEAT,
OPTION,
COMMENT,
diff --git a/xorg-server/include/systemd-logind.h b/xorg-server/include/systemd-logind.h
index 06dd03134..a4067d097 100644
--- a/xorg-server/include/systemd-logind.h
+++ b/xorg-server/include/systemd-logind.h
@@ -30,14 +30,14 @@
int systemd_logind_init(void);
void systemd_logind_fini(void);
int systemd_logind_take_fd(int major, int minor, const char *path, Bool *paus);
-void systemd_logind_release_fd(int major, int minor);
+void systemd_logind_release_fd(int major, int minor, int fd);
int systemd_logind_controls_session(void);
void systemd_logind_vtenter(void);
#else
#define systemd_logind_init()
#define systemd_logind_fini()
#define systemd_logind_take_fd(major, minor, path, paus) -1
-#define systemd_logind_release_fd(major, minor)
+#define systemd_logind_release_fd(major, minor, fd) close(fd)
#define systemd_logind_controls_session() 0
#define systemd_logind_vtenter()
#endif
diff --git a/xorg-server/mi/miwindow.c b/xorg-server/mi/miwindow.c
index c6f0e5315..3ee83d7c0 100644
--- a/xorg-server/mi/miwindow.c
+++ b/xorg-server/mi/miwindow.c
@@ -766,7 +766,7 @@ miSpriteTrace(SpritePtr pSprite, int x, int y)
WindowPtr pWin;
BoxRec box;
- pWin = DeepestSpriteWin(pSprite);
+ pWin = DeepestSpriteWin(pSprite)->firstChild;
while (pWin) {
if ((pWin->mapped) &&
(x >= pWin->drawable.x - wBorderWidth(pWin)) &&
diff --git a/xorg-server/randr/rrcrtc.c b/xorg-server/randr/rrcrtc.c
index 76d24f60a..7c59293fe 100644
--- a/xorg-server/randr/rrcrtc.c
+++ b/xorg-server/randr/rrcrtc.c
@@ -477,7 +477,7 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
xorg_list_for_each_entry(slave, &pScreen->output_slave_list, output_head) {
rrScrPrivPtr slave_priv = rrGetScrPriv(slave);
- for (c = 0; c < slave_priv->numCrtcs; c++)
+ for (c = 0; c < slave_priv->numCrtcs; c++) {
if (slave_priv->crtcs[c] == rr_crtc) {
newbox.x1 = x;
newbox.x2 = x + w;
@@ -492,8 +492,9 @@ rrCheckPixmapBounding(ScreenPtr pScreen,
newbox.y1 = slave_priv->crtcs[c]->y;
newbox.y2 = slave_priv->crtcs[c]->y + slave_priv->crtcs[c]->mode->mode.height;
}
- RegionInit(&new_crtc_region, &newbox, 1);
- RegionUnion(&total_region, &total_region, &new_crtc_region);
+ RegionInit(&new_crtc_region, &newbox, 1);
+ RegionUnion(&total_region, &total_region, &new_crtc_region);
+ }
}
newsize = RegionExtents(&total_region);
diff --git a/xorg-server/xkeyboard-config/rules/base.extras.xml.in b/xorg-server/xkeyboard-config/rules/base.extras.xml.in
index dd7339390..9107c03f2 100644
--- a/xorg-server/xkeyboard-config/rules/base.extras.xml.in
+++ b/xorg-server/xkeyboard-config/rules/base.extras.xml.in
@@ -120,6 +120,12 @@
<_description>German (Sun Type 6/7)</_description>
</configItem>
</variant>
+ <variant>
+ <configItem>
+ <name>adnw</name>
+ <_description>German (Aus der Neo-Welt)</_description>
+ </configItem>
+ </variant>
</variantList>
</layout>
<layout>
@@ -689,6 +695,12 @@
<variantList>
<variant>
<configItem>
+ <name>dvorak_a5</name>
+ <_description>Swedish (Dvorak A5)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
<name>sun_type6</name>
<_description>Swedish (Sun Type 6/7)</_description>
</configItem>
diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in
index 3b32e2209..0b0c1482c 100644
--- a/xorg-server/xkeyboard-config/rules/base.xml.in
+++ b/xorg-server/xkeyboard-config/rules/base.xml.in
@@ -1584,7 +1584,14 @@
<iso639Id>alb</iso639Id>
</languageList>
</configItem>
- <variantList/>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>plisi-d1</name>
+ <_description>Albanian (Plisi D1)</_description>
+ </configItem>
+ </variant>
+ </variantList>
</layout>
<layout>
<configItem>
@@ -6604,7 +6611,7 @@
</option>
<option>
<configItem>
- <name>grab:debug_actions</name>
+ <name>grab:debug</name>
<_description>Allow grab and window tree logging</_description>
</configItem>
</option>
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
index 9d274dff1..9e2158767 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
@@ -1,2 +1,3 @@
de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+ de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
jp $sun_compat = complete+japan(kana_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
index b7d6e309a..28fb80b8a 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
@@ -1,2 +1,3 @@
de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
+ de adnw = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
jp $sun_compat = +complete+japan(kana_lock):2
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
index 360b4c425..db62b75e1 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
@@ -1,2 +1,3 @@
de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
+ de adnw = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
jp $sun_compat = +complete+japan(kana_lock):3
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
index 6633312c2..1df202f99 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
@@ -1,2 +1,3 @@
de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
+ de adnw = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
jp $sun_compat = +complete+japan(kana_lock):4
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
index 927ff06b2..45b94b422 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
@@ -1,2 +1,3 @@
de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+ de adnw = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
jp $sun_compat = complete+japan(kana_lock)
diff --git a/xorg-server/xkeyboard-config/symbols/al b/xorg-server/xkeyboard-config/symbols/al
index a8d6ec715..a6d58bfb7 100644
--- a/xorg-server/xkeyboard-config/symbols/al
+++ b/xorg-server/xkeyboard-config/symbols/al
@@ -39,3 +39,67 @@ xkb_symbols "basic" {
include "level3(ralt_switch)"
};
+
+
+partial alphanumeric_keys
+xkb_symbols "plisi-d1" {
+
+ include "us"
+
+ name[Group1]= "Albanian (Plisi D1)";
+
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand, braceleft ] };
+ key <AE08> { [ 8, asterisk, braceright ] };
+ key <AE09> { [ 9, parenleft, bracketleft ] };
+ key <AE10> { [ 0, parenright, bracketright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ ccedilla, Ccedilla ] };
+ key <AD12> { [ greater, less ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ ediaeresis, Ediaeresis ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ slash, question ] };
+
+ key <BKSL> { [ backslash, bar ] };
+
+ include "level3(ralt_switch)"
+};
+
diff --git a/xorg-server/xkeyboard-config/symbols/de b/xorg-server/xkeyboard-config/symbols/de
index 150c081c9..368456c52 100644
--- a/xorg-server/xkeyboard-config/symbols/de
+++ b/xorg-server/xkeyboard-config/symbols/de
@@ -748,3 +748,59 @@ partial alphanumeric_keys
xkb_symbols "sun_type6" {
include "sun_vndr/de(sun_type6)"
};
+
+partial alphanumeric_keys
+xkb_symbols "adnw_base" {
+ include "de(neo_base)"
+
+ key.type[Group1] = "EIGHT_LEVEL";
+ key <AD04> { [ period, enfilledcircbullet, NoSymbol, U03D1, NoSymbol, NoSymbol, U21A6, NoSymbol ] };
+ key <AB04> { [ comma, endash, NoSymbol, U03F1, NoSymbol, NoSymbol, U21D2, NoSymbol ] };
+
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD01> { [ k, K, NoSymbol, Greek_kappa, NoSymbol, NoSymbol, multiply, NoSymbol ] };
+ key <AD02> { [ u, U, NoSymbol, NoSymbol, NoSymbol, NoSymbol, includedin, NoSymbol ] };
+ key <AD03> { [ udiaeresis, Udiaeresis, NoSymbol, NoSymbol, NoSymbol, NoSymbol, union, NoSymbol ] };
+ key <AD05> { [ adiaeresis, Adiaeresis, NoSymbol, Greek_eta, NoSymbol, NoSymbol, U2135, NoSymbol ] };
+ key <AD06> { [ v, V, NoSymbol, NoSymbol, NoSymbol, NoSymbol, radical, NoSymbol ] };
+ key <AD07> { [ g, G, NoSymbol, Greek_gamma, NoSymbol, NoSymbol, Greek_GAMMA, NoSymbol ] };
+ key <AD08> { [ c, C, NoSymbol, Greek_chi, NoSymbol, NoSymbol, U2102, NoSymbol ] };
+ key <AD09> { [ l, L, NoSymbol, Greek_lambda, NoSymbol, NoSymbol, Greek_LAMBDA, NoSymbol ] };
+ key <AD10> { [ j, J, NoSymbol, Greek_theta, NoSymbol, NoSymbol, Greek_THETA, NoSymbol ] };
+ key <AD11> { [ f, F, NoSymbol, Greek_phi, NoSymbol, NoSymbol, Greek_PHI, NoSymbol ] };
+ key <AC01> { [ h, H, NoSymbol, Greek_psi, NoSymbol, NoSymbol, Greek_PSI, NoSymbol ] };
+ key <AC02> { [ i, I, NoSymbol, Greek_iota, NoSymbol, NoSymbol, integral, NoSymbol ] };
+ key <AC03> { [ e, E, NoSymbol, Greek_epsilon, NoSymbol, NoSymbol, U2203, NoSymbol ] };
+ key <AC04> { [ a, A, NoSymbol, Greek_alpha, NoSymbol, NoSymbol, U2200, NoSymbol ] };
+ key <AC05> { [ o, O, NoSymbol, Greek_omicron, NoSymbol, NoSymbol, elementof, NoSymbol ] };
+ key <AC06> { [ d, D, NoSymbol, Greek_delta, NoSymbol, NoSymbol, Greek_DELTA, NoSymbol ] };
+ key <AC07> { [ t, T, NoSymbol, Greek_tau, NoSymbol, NoSymbol, partialderivative, NoSymbol ] };
+ key <AC08> { [ r, R, NoSymbol, Greek_rho, NoSymbol, NoSymbol, U211D, NoSymbol ] };
+ key <AC09> { [ n, N, NoSymbol, Greek_nu, NoSymbol, NoSymbol, U2115, NoSymbol ] };
+ key <AC10> { [ s, S, NoSymbol, Greek_sigma, NoSymbol, NoSymbol, Greek_SIGMA, NoSymbol ] };
+ key <AC11> { [ ssharp, U1E9E, NoSymbol, Greek_finalsmallsigma, NoSymbol, NoSymbol, jot, NoSymbol ] };
+ key <AB01> { [ x, X, NoSymbol, Greek_xi, NoSymbol, NoSymbol, Greek_XI, NoSymbol ] };
+ key <AB02> { [ y, Y, NoSymbol, Greek_upsilon, NoSymbol, NoSymbol, nabla, NoSymbol ] };
+ key <AB03> { [ odiaeresis, odiaeresis, NoSymbol, U03F5, NoSymbol, NoSymbol, intersection, NoSymbol ] };
+ key <AB05> { [ q, Q, NoSymbol, U03D5, NoSymbol, NoSymbol, U211A, NoSymbol ] };
+ key <AB06> { [ b, B, NoSymbol, Greek_beta, NoSymbol, NoSymbol, U21D0, NoSymbol ] };
+ key <AB07> { [ p, P, NoSymbol, Greek_pi, NoSymbol, NoSymbol, Greek_PI, NoSymbol ] };
+ key <AB08> { [ w, W, NoSymbol, Greek_omega, NoSymbol, NoSymbol, Greek_OMEGA, NoSymbol ] };
+ key <AB09> { [ m, M, NoSymbol, Greek_mu, NoSymbol, NoSymbol, ifonlyif, NoSymbol ] };
+ key <AB10> { [ z, Z, NoSymbol, Greek_zeta, NoSymbol, NoSymbol, U2124, NoSymbol ] };
+};
+
+partial alphanumeric_keys modifier_keys keypad_keys
+xkb_symbols "adnw" {
+
+ include "de(adnw_base)"
+
+ name[Group1]= "German (Aus der Neo-Welt)";
+
+ include "shift(both_capslock)"
+ include "level3(caps_switch)"
+ include "level3(bksl_switch)"
+ include "level5(lsgt_switch)"
+ include "level5(ralt_switch)"
+};
+
diff --git a/xorg-server/xkeyboard-config/symbols/ru b/xorg-server/xkeyboard-config/symbols/ru
index fd1cc0ec5..64c862b26 100644
--- a/xorg-server/xkeyboard-config/symbols/ru
+++ b/xorg-server/xkeyboard-config/symbols/ru
@@ -156,6 +156,8 @@ xkb_symbols "typewriter-legacy" {
partial alphanumeric_keys
xkb_symbols "phonetic" {
+ name[Group1]= "Russian (phonetic)";
+
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, Cyrillic_io ] };
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/de b/xorg-server/xkeyboard-config/symbols/sun_vndr/de
index 7736088bb..d95b07952 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/de
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/de
@@ -121,6 +121,16 @@ partial alphanumeric_keys
};
partial alphanumeric_keys
+ xkb_symbols "adnw" {
+ include "de(adnw)"
+};
+
+partial alphanumeric_keys
+ xkb_symbols "adnw_base" {
+ include "de(adnw_base)"
+};
+
+partial alphanumeric_keys
xkb_symbols "neo" {
include "de(neo)"
};