aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/dmx
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-06-08 14:29:46 +0200
committermarha <marha@users.sourceforge.net>2012-06-08 14:50:37 +0200
commit72ec0e3bb2d7fc6b77b2a75873792f781679da6a (patch)
tree0a736ab9a8c26276929ab077dc661e3625b54884 /xorg-server/hw/dmx
parent5e865910f0ce672295bd60460631339be5e311a0 (diff)
parent990bc3f015a4f8fce2eb918375defcd44980a845 (diff)
downloadvcxsrv-72ec0e3bb2d7fc6b77b2a75873792f781679da6a.tar.gz
vcxsrv-72ec0e3bb2d7fc6b77b2a75873792f781679da6a.tar.bz2
vcxsrv-72ec0e3bb2d7fc6b77b2a75873792f781679da6a.zip
Merge remote-tracking branch 'origin/released'
Conflicts: fontconfig/.gitignore libX11/src/ConvSel.c libX11/src/CrGlCur.c libX11/src/CrWindow.c libX11/src/GetDflt.c libX11/src/Window.c libX11/src/xlibi18n/XimProto.h libX11/src/xlibi18n/lcDynamic.c libxcb/src/.gitignore libxcb/src/xcb_ext.c libxcb/src/xcb_xid.c mesalib/src/glsl/.gitignore mesalib/src/glsl/glcpp/.gitignore mesalib/src/mapi/glapi/gen/glX_API.xml mesalib/src/mapi/glapi/glapi_getproc.c mesalib/src/mesa/main/.gitignore mesalib/src/mesa/main/syncobj.c mesalib/src/mesa/program/.gitignore xkbcomp/listing.c xkbcomp/xkbpath.c xorg-server/.gitignore xorg-server/Xext/xvmain.c xorg-server/dix/dispatch.c xorg-server/hw/xwin/glx/winpriv.h xorg-server/hw/xwin/winprefsyacc.y xorg-server/hw/xwin/winscrinit.c xorg-server/xkeyboard-config/rules/bin/ml1_s.sh xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh xorg-server/xkeyboard-config/rules/bin/ml_s.sh xorg-server/xkeyboard-config/rules/bin/mlv_s.sh xorg-server/xkeyboard-config/rules/compat/.gitignore
Diffstat (limited to 'xorg-server/hw/dmx')
-rw-r--r--xorg-server/hw/dmx/.gitignore2
-rw-r--r--xorg-server/hw/dmx/config/.gitignore7
-rw-r--r--xorg-server/hw/dmx/config/TODO14
-rw-r--r--xorg-server/hw/dmx/config/dmxcompat.h88
-rw-r--r--xorg-server/hw/dmx/config/parser.y452
-rw-r--r--xorg-server/hw/dmx/config/test-a.in2
-rw-r--r--xorg-server/hw/dmx/config/test-a.out4
-rw-r--r--xorg-server/hw/dmx/config/test-b.in2
-rw-r--r--xorg-server/hw/dmx/config/test-b.out2
-rw-r--r--xorg-server/hw/dmx/config/test-c.in2
-rw-r--r--xorg-server/hw/dmx/config/test-c.out4
-rw-r--r--xorg-server/hw/dmx/config/test-d.in2
-rw-r--r--xorg-server/hw/dmx/config/test-d.out4
-rw-r--r--xorg-server/hw/dmx/config/test-e.in2
-rw-r--r--xorg-server/hw/dmx/config/test-e.out4
-rw-r--r--xorg-server/hw/dmx/config/test-f.in4
-rw-r--r--xorg-server/hw/dmx/config/test-g.in8
-rw-r--r--xorg-server/hw/dmx/config/test-g.out8
-rw-r--r--xorg-server/hw/dmx/config/test-h.in14
-rw-r--r--xorg-server/hw/dmx/config/test-h.out14
-rw-r--r--xorg-server/hw/dmx/config/test-i.in6
-rw-r--r--xorg-server/hw/dmx/config/test-i.out6
-rw-r--r--xorg-server/hw/dmx/config/test-j.in26
-rw-r--r--xorg-server/hw/dmx/config/test-j.out22
-rw-r--r--xorg-server/hw/dmx/config/test-k.in6
-rw-r--r--xorg-server/hw/dmx/config/test-k.out6
-rw-r--r--xorg-server/hw/dmx/config/test-l.in24
-rw-r--r--xorg-server/hw/dmx/config/test-l.out24
-rw-r--r--xorg-server/hw/dmx/dmxextension.c2
-rw-r--r--xorg-server/hw/dmx/dmxscrinit.c26
-rw-r--r--xorg-server/hw/dmx/dmxscrinit.h4
-rw-r--r--xorg-server/hw/dmx/doc/.gitignore6
-rw-r--r--xorg-server/hw/dmx/doc/DMXSpec-v1.txt916
-rw-r--r--xorg-server/hw/dmx/doc/DMXSpec.txt1750
-rw-r--r--xorg-server/hw/dmx/doxygen/.gitignore2
-rw-r--r--xorg-server/hw/dmx/examples/.gitignore17
-rw-r--r--xorg-server/hw/dmx/input/Makefile.am134
-rw-r--r--xorg-server/hw/dmx/input/dmxconsole.c4
-rw-r--r--xorg-server/hw/dmx/input/dmxdummy.h86
39 files changed, 1870 insertions, 1836 deletions
diff --git a/xorg-server/hw/dmx/.gitignore b/xorg-server/hw/dmx/.gitignore
new file mode 100644
index 000000000..f71acff10
--- /dev/null
+++ b/xorg-server/hw/dmx/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+Xdmx
diff --git a/xorg-server/hw/dmx/config/.gitignore b/xorg-server/hw/dmx/config/.gitignore
new file mode 100644
index 000000000..bf5e80873
--- /dev/null
+++ b/xorg-server/hw/dmx/config/.gitignore
@@ -0,0 +1,7 @@
+# Add & Override for this directory and it's subdirectories
+dmxtodmx
+parser.c
+parser.h
+scanner.c
+vdltodmx
+xdmxconfig
diff --git a/xorg-server/hw/dmx/config/TODO b/xorg-server/hw/dmx/config/TODO
index 2998ff4a0..0e9255fd2 100644
--- a/xorg-server/hw/dmx/config/TODO
+++ b/xorg-server/hw/dmx/config/TODO
@@ -1,7 +1,7 @@
-Fri May 31 13:20:17 2002
-
-1) Sanitize values from input boxes.
-
-2) Add canvas colors to cavas widget resources or to command-line options.
-
-3) Add ability to edit option line(s) and wall.
+Fri May 31 13:20:17 2002
+
+1) Sanitize values from input boxes.
+
+2) Add canvas colors to cavas widget resources or to command-line options.
+
+3) Add ability to edit option line(s) and wall.
diff --git a/xorg-server/hw/dmx/config/dmxcompat.h b/xorg-server/hw/dmx/config/dmxcompat.h
index 718892040..b9b083ff6 100644
--- a/xorg-server/hw/dmx/config/dmxcompat.h
+++ b/xorg-server/hw/dmx/config/dmxcompat.h
@@ -1,44 +1,44 @@
-/*
- * Copyright 2002 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation on the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to VDL compatibility support. \see dmxcompat.c
- *
- * This file is not used by the DMX server.
- */
-
-#ifndef _DMXCOMPAT_H_
-#define _DMXCOMPAT_H_
-
-extern DMXConfigEntryPtr dmxVDLRead(const char *filename);
-#endif
+/*
+ * Copyright 2002 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+/** \file
+ * Interface to VDL compatibility support. \see dmxcompat.c
+ *
+ * This file is not used by the DMX server.
+ */
+
+#ifndef _DMXCOMPAT_H_
+#define _DMXCOMPAT_H_
+
+extern DMXConfigEntryPtr dmxVDLRead(const char *filename);
+#endif
diff --git a/xorg-server/hw/dmx/config/parser.y b/xorg-server/hw/dmx/config/parser.y
index ac2441017..9a45e624f 100644
--- a/xorg-server/hw/dmx/config/parser.y
+++ b/xorg-server/hw/dmx/config/parser.y
@@ -1,226 +1,226 @@
-/* $XFree86$ */
-/*
- * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation on the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-%{
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxparse.h"
-#include <string.h>
-#include <stdlib.h>
-#define YYDEBUG 1
-#define YYERROR_VERBOSE
-#define YY_USE_PROTOS
-
-DMXConfigEntryPtr dmxConfigEntry = NULL;
-#define APPEND(type, h, t) \
-{ \
- type pt; \
- for (pt = h; pt->next; pt = pt->next); \
- pt->next = t; \
-}
-%}
-
-%union {
- DMXConfigTokenPtr token;
- DMXConfigStringPtr string;
- DMXConfigNumberPtr number;
- DMXConfigPairPtr pair;
- DMXConfigFullDimPtr fdim;
- DMXConfigPartDimPtr pdim;
- DMXConfigDisplayPtr display;
- DMXConfigWallPtr wall;
- DMXConfigOptionPtr option;
- DMXConfigParamPtr param;
- DMXConfigCommentPtr comment;
- DMXConfigSubPtr subentry;
- DMXConfigVirtualPtr virtual;
- DMXConfigEntryPtr entry;
-}
-
- /* Terminals */
-%token <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
-%token <string> T_STRING
-%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
-%token <comment> T_COMMENT T_LINE_COMMENT
-
- /* Non-termials */
-%type <token> Display Wall Terminal Open Close
-%type <string> NameList Name
-%type <pair> Dimension Offset Origin
-%type <pdim> PartialDim
-%type <fdim> FullDim
-%type <display> DisplayEntry
-%type <option> OptionEntry
-%type <param> ParamEntry ParamList Param
-%type <subentry> SubList Sub
-%type <wall> WallEntry
-%type <virtual> Virtual
-%type <entry> Program EntryList Entry
-
-%%
-
-Program : EntryList { dmxConfigEntry = $1; }
- ;
-
-EntryList : Entry
- | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
- ;
-
-Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
- | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
- ;
-
-Virtual : T_VIRTUAL Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
- | T_VIRTUAL Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
- | T_VIRTUAL Name Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
- | T_VIRTUAL Name Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
- ;
-
-SubList : Sub
- | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
- ;
-
-Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
- | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
- | WallEntry { $$ = dmxConfigSubWall($1); }
- | OptionEntry { $$ = dmxConfigSubOption($1); }
- | ParamEntry { $$ = dmxConfigSubParam($1); }
- ;
-
-OptionEntry : T_OPTION NameList Terminal
- { $$ = dmxConfigCreateOption($1, $2, $3); }
- ;
-
-ParamEntry : T_PARAM NameList Terminal
- { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
- | T_PARAM Open ParamList Close
- { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
- $$->next = $3;
- }
- ;
-
-ParamList : Param
- | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
- ;
-
-Param : NameList Terminal
- { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
- ;
-
-PartialDim : Dimension Offset
- { $$ = dmxConfigCreatePartDim($1, $2); }
- | Dimension
- { $$ = dmxConfigCreatePartDim($1, NULL); }
- | Offset
- { $$ = dmxConfigCreatePartDim(NULL, $1); }
- ;
-
-FullDim : PartialDim '/' PartialDim
- { $$ = dmxConfigCreateFullDim($1, $3); }
- | '/' PartialDim
- { $$ = dmxConfigCreateFullDim(NULL, $2); }
- | PartialDim
- { $$ = dmxConfigCreateFullDim($1, NULL); }
- ;
-
-DisplayEntry : Display Name FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
- | Display FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
- | Display Name Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
-
- | Display Name FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
- | Display FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
- | Display Name Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
- | Display Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
- ;
-
-WallEntry : Wall Dimension Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
- | Wall Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
- | Wall NameList Terminal
- { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
- ;
-
-Display : T_DISPLAY
- | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Name : T_STRING
- | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Dimension : T_DIMENSION
- | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Offset : T_OFFSET
- | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Origin : T_ORIGIN
- | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Terminal : ';'
- | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Open : '{'
- | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Close : '}'
- | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Wall : T_WALL
- | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-NameList : Name
- | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
- ;
+/* $XFree86$ */
+/*
+ * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+%{
+#ifdef HAVE_DMX_CONFIG_H
+#include <dmx-config.h>
+#endif
+
+#include "dmxparse.h"
+#include <string.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#define YYERROR_VERBOSE
+#define YY_USE_PROTOS
+
+DMXConfigEntryPtr dmxConfigEntry = NULL;
+#define APPEND(type, h, t) \
+{ \
+ type pt; \
+ for (pt = h; pt->next; pt = pt->next); \
+ pt->next = t; \
+}
+%}
+
+%union {
+ DMXConfigTokenPtr token;
+ DMXConfigStringPtr string;
+ DMXConfigNumberPtr number;
+ DMXConfigPairPtr pair;
+ DMXConfigFullDimPtr fdim;
+ DMXConfigPartDimPtr pdim;
+ DMXConfigDisplayPtr display;
+ DMXConfigWallPtr wall;
+ DMXConfigOptionPtr option;
+ DMXConfigParamPtr param;
+ DMXConfigCommentPtr comment;
+ DMXConfigSubPtr subentry;
+ DMXConfigVirtualPtr virtual;
+ DMXConfigEntryPtr entry;
+}
+
+ /* Terminals */
+%token <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
+%token <string> T_STRING
+%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
+%token <comment> T_COMMENT T_LINE_COMMENT
+
+ /* Non-termials */
+%type <token> Display Wall Terminal Open Close
+%type <string> NameList Name
+%type <pair> Dimension Offset Origin
+%type <pdim> PartialDim
+%type <fdim> FullDim
+%type <display> DisplayEntry
+%type <option> OptionEntry
+%type <param> ParamEntry ParamList Param
+%type <subentry> SubList Sub
+%type <wall> WallEntry
+%type <virtual> Virtual
+%type <entry> Program EntryList Entry
+
+%%
+
+Program : EntryList { dmxConfigEntry = $1; }
+ ;
+
+EntryList : Entry
+ | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
+ ;
+
+Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
+ | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
+ ;
+
+Virtual : T_VIRTUAL Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
+ | T_VIRTUAL Dimension Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
+ | T_VIRTUAL Name Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
+ | T_VIRTUAL Name Dimension Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
+ ;
+
+SubList : Sub
+ | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
+ ;
+
+Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
+ | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
+ | WallEntry { $$ = dmxConfigSubWall($1); }
+ | OptionEntry { $$ = dmxConfigSubOption($1); }
+ | ParamEntry { $$ = dmxConfigSubParam($1); }
+ ;
+
+OptionEntry : T_OPTION NameList Terminal
+ { $$ = dmxConfigCreateOption($1, $2, $3); }
+ ;
+
+ParamEntry : T_PARAM NameList Terminal
+ { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
+ | T_PARAM Open ParamList Close
+ { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
+ $$->next = $3;
+ }
+ ;
+
+ParamList : Param
+ | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
+ ;
+
+Param : NameList Terminal
+ { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
+ ;
+
+PartialDim : Dimension Offset
+ { $$ = dmxConfigCreatePartDim($1, $2); }
+ | Dimension
+ { $$ = dmxConfigCreatePartDim($1, NULL); }
+ | Offset
+ { $$ = dmxConfigCreatePartDim(NULL, $1); }
+ ;
+
+FullDim : PartialDim '/' PartialDim
+ { $$ = dmxConfigCreateFullDim($1, $3); }
+ | '/' PartialDim
+ { $$ = dmxConfigCreateFullDim(NULL, $2); }
+ | PartialDim
+ { $$ = dmxConfigCreateFullDim($1, NULL); }
+ ;
+
+DisplayEntry : Display Name FullDim Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
+ | Display FullDim Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
+ | Display Name Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
+
+ | Display Name FullDim Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
+ | Display FullDim Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
+ | Display Name Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
+ | Display Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
+ ;
+
+WallEntry : Wall Dimension Dimension NameList Terminal
+ { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
+ | Wall Dimension NameList Terminal
+ { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
+ | Wall NameList Terminal
+ { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
+ ;
+
+Display : T_DISPLAY
+ | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Name : T_STRING
+ | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Dimension : T_DIMENSION
+ | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Offset : T_OFFSET
+ | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Origin : T_ORIGIN
+ | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Terminal : ';'
+ | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Open : '{'
+ | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Close : '}'
+ | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Wall : T_WALL
+ | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+NameList : Name
+ | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
+ ;
diff --git a/xorg-server/hw/dmx/config/test-a.in b/xorg-server/hw/dmx/config/test-a.in
index 827675374..9aeeab047 100644
--- a/xorg-server/hw/dmx/config/test-a.in
+++ b/xorg-server/hw/dmx/config/test-a.in
@@ -1 +1 @@
-error
+error
diff --git a/xorg-server/hw/dmx/config/test-a.out b/xorg-server/hw/dmx/config/test-a.out
index d35b29fc0..e8b7404e1 100644
--- a/xorg-server/hw/dmx/config/test-a.out
+++ b/xorg-server/hw/dmx/config/test-a.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "error"
-syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "error"
+syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-b.in b/xorg-server/hw/dmx/config/test-b.in
index 308ec1db4..d4f30e004 100644
--- a/xorg-server/hw/dmx/config/test-b.in
+++ b/xorg-server/hw/dmx/config/test-b.in
@@ -1 +1 @@
-# comment
+# comment
diff --git a/xorg-server/hw/dmx/config/test-b.out b/xorg-server/hw/dmx/config/test-b.out
index 308ec1db4..d4f30e004 100644
--- a/xorg-server/hw/dmx/config/test-b.out
+++ b/xorg-server/hw/dmx/config/test-b.out
@@ -1 +1 @@
-# comment
+# comment
diff --git a/xorg-server/hw/dmx/config/test-c.in b/xorg-server/hw/dmx/config/test-c.in
index e07ae5ba6..a3d66513f 100644
--- a/xorg-server/hw/dmx/config/test-c.in
+++ b/xorg-server/hw/dmx/config/test-c.in
@@ -1 +1 @@
-virtual
+virtual
diff --git a/xorg-server/hw/dmx/config/test-c.out b/xorg-server/hw/dmx/config/test-c.out
index 7390397a4..87838938a 100644
--- a/xorg-server/hw/dmx/config/test-c.out
+++ b/xorg-server/hw/dmx/config/test-c.out
@@ -1,2 +1,2 @@
-parse error on line 2 at token " "
-syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
+parse error on line 2 at token " "
+syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
diff --git a/xorg-server/hw/dmx/config/test-d.in b/xorg-server/hw/dmx/config/test-d.in
index 6827503b1..af14b8c09 100644
--- a/xorg-server/hw/dmx/config/test-d.in
+++ b/xorg-server/hw/dmx/config/test-d.in
@@ -1 +1 @@
-display
+display
diff --git a/xorg-server/hw/dmx/config/test-d.out b/xorg-server/hw/dmx/config/test-d.out
index f3219b301..f6e3db0a7 100644
--- a/xorg-server/hw/dmx/config/test-d.out
+++ b/xorg-server/hw/dmx/config/test-d.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "display"
+syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-e.in b/xorg-server/hw/dmx/config/test-e.in
index 21dbde95c..4ebcf2406 100644
--- a/xorg-server/hw/dmx/config/test-e.in
+++ b/xorg-server/hw/dmx/config/test-e.in
@@ -1 +1 @@
-display;
+display;
diff --git a/xorg-server/hw/dmx/config/test-e.out b/xorg-server/hw/dmx/config/test-e.out
index f3219b301..f6e3db0a7 100644
--- a/xorg-server/hw/dmx/config/test-e.out
+++ b/xorg-server/hw/dmx/config/test-e.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "display"
+syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-f.in b/xorg-server/hw/dmx/config/test-f.in
index 17f6c6327..1fe26c507 100644
--- a/xorg-server/hw/dmx/config/test-f.in
+++ b/xorg-server/hw/dmx/config/test-f.in
@@ -1,2 +1,2 @@
-virtual {
-}
+virtual {
+}
diff --git a/xorg-server/hw/dmx/config/test-g.in b/xorg-server/hw/dmx/config/test-g.in
index 453d8121c..c8741c58e 100644
--- a/xorg-server/hw/dmx/config/test-g.in
+++ b/xorg-server/hw/dmx/config/test-g.in
@@ -1,4 +1,4 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
+virtual a {
+ display d0:0 1280x1024;
+ display d1:0 1280x1024;
+}
diff --git a/xorg-server/hw/dmx/config/test-g.out b/xorg-server/hw/dmx/config/test-g.out
index 453d8121c..c8741c58e 100644
--- a/xorg-server/hw/dmx/config/test-g.out
+++ b/xorg-server/hw/dmx/config/test-g.out
@@ -1,4 +1,4 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
+virtual a {
+ display d0:0 1280x1024;
+ display d1:0 1280x1024;
+}
diff --git a/xorg-server/hw/dmx/config/test-h.in b/xorg-server/hw/dmx/config/test-h.in
index 1193d309e..93cef324f 100644
--- a/xorg-server/hw/dmx/config/test-h.in
+++ b/xorg-server/hw/dmx/config/test-h.in
@@ -1,7 +1,7 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
+# comment a
+# comment b
+## comment c
+# <-- tab
+# Next comment is empty
+#
+# Non empty
diff --git a/xorg-server/hw/dmx/config/test-h.out b/xorg-server/hw/dmx/config/test-h.out
index 1193d309e..93cef324f 100644
--- a/xorg-server/hw/dmx/config/test-h.out
+++ b/xorg-server/hw/dmx/config/test-h.out
@@ -1,7 +1,7 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
+# comment a
+# comment b
+## comment c
+# <-- tab
+# Next comment is empty
+#
+# Non empty
diff --git a/xorg-server/hw/dmx/config/test-i.in b/xorg-server/hw/dmx/config/test-i.in
index b65967e62..bf5d345c3 100644
--- a/xorg-server/hw/dmx/config/test-i.in
+++ b/xorg-server/hw/dmx/config/test-i.in
@@ -1,3 +1,3 @@
-virtual a {
- param a b; # comment
-}
+virtual a {
+ param a b; # comment
+}
diff --git a/xorg-server/hw/dmx/config/test-i.out b/xorg-server/hw/dmx/config/test-i.out
index b65967e62..bf5d345c3 100644
--- a/xorg-server/hw/dmx/config/test-i.out
+++ b/xorg-server/hw/dmx/config/test-i.out
@@ -1,3 +1,3 @@
-virtual a {
- param a b; # comment
-}
+virtual a {
+ param a b; # comment
+}
diff --git a/xorg-server/hw/dmx/config/test-j.in b/xorg-server/hw/dmx/config/test-j.in
index cc1cdd0ea..087da79a6 100644
--- a/xorg-server/hw/dmx/config/test-j.in
+++ b/xorg-server/hw/dmx/config/test-j.in
@@ -1,13 +1,13 @@
-virtual a {
- option aaa # bbb
- aa cc;
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf
- "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
-}
+virtual a {
+ option aaa # bbb
+ aa cc;
+ param { # comment 1
+ a b;
+ c d;
+ x y z; # comment 2
+ }
+ param e f g h; # comment 3
+ param e f g hlskdjflskdfjsd #comment 4
+ flksdjf sldkfjsldkfjsdlf
+ "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
+}
diff --git a/xorg-server/hw/dmx/config/test-j.out b/xorg-server/hw/dmx/config/test-j.out
index 9acaa009b..d386e40b5 100644
--- a/xorg-server/hw/dmx/config/test-j.out
+++ b/xorg-server/hw/dmx/config/test-j.out
@@ -1,11 +1,11 @@
-virtual a {
- option "aaa aa cc";
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
-}
+virtual a {
+ option "aaa aa cc";
+ param { # comment 1
+ a b;
+ c d;
+ x y z; # comment 2
+ }
+ param e f g h; # comment 3
+ param e f g hlskdjflskdfjsd #comment 4
+ flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
+}
diff --git a/xorg-server/hw/dmx/config/test-k.in b/xorg-server/hw/dmx/config/test-k.in
index 2218d26d9..937e8ee27 100644
--- a/xorg-server/hw/dmx/config/test-k.in
+++ b/xorg-server/hw/dmx/config/test-k.in
@@ -1,3 +1,3 @@
-virtual a {
- option +xinerama -syncbatch 0;
-}
+virtual a {
+ option +xinerama -syncbatch 0;
+}
diff --git a/xorg-server/hw/dmx/config/test-k.out b/xorg-server/hw/dmx/config/test-k.out
index ebd743923..cdfd70358 100644
--- a/xorg-server/hw/dmx/config/test-k.out
+++ b/xorg-server/hw/dmx/config/test-k.out
@@ -1,3 +1,3 @@
-virtual a {
- option "+xinerama -syncbatch 0";
-}
+virtual a {
+ option "+xinerama -syncbatch 0";
+}
diff --git a/xorg-server/hw/dmx/config/test-l.in b/xorg-server/hw/dmx/config/test-l.in
index 7bf05139b..d04c47b9a 100644
--- a/xorg-server/hw/dmx/config/test-l.in
+++ b/xorg-server/hw/dmx/config/test-l.in
@@ -1,12 +1,12 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
+virtual a {
+ display d0:0 1x2;
+ display d1:0 +3+4;
+ display d2:0 100x200 @1x1;
+ display d3:0 +3+4 @2x2;
+ display d4:0 100x200+3+4 @3x3;
+ display d5:0 / 1x2+3+4;
+ display d6:0 / 1x2;
+ display d7:0 / +3+4;
+ display d8:0 / 1x2+3+4 @4x4;
+ display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
+}
diff --git a/xorg-server/hw/dmx/config/test-l.out b/xorg-server/hw/dmx/config/test-l.out
index 7bf05139b..d04c47b9a 100644
--- a/xorg-server/hw/dmx/config/test-l.out
+++ b/xorg-server/hw/dmx/config/test-l.out
@@ -1,12 +1,12 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
+virtual a {
+ display d0:0 1x2;
+ display d1:0 +3+4;
+ display d2:0 100x200 @1x1;
+ display d3:0 +3+4 @2x2;
+ display d4:0 100x200+3+4 @3x3;
+ display d5:0 / 1x2+3+4;
+ display d6:0 / 1x2;
+ display d7:0 / +3+4;
+ display d8:0 / 1x2+3+4 @4x4;
+ display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
+}
diff --git a/xorg-server/hw/dmx/dmxextension.c b/xorg-server/hw/dmx/dmxextension.c
index faa28a590..d7296ae2d 100644
--- a/xorg-server/hw/dmx/dmxextension.c
+++ b/xorg-server/hw/dmx/dmxextension.c
@@ -1318,7 +1318,7 @@ dmxAttachScreen(int idx, DMXScreenAttributesPtr attr)
}
/* Initialize the BE screen resources */
- dmxBEScreenInit(idx, screenInfo.screens[idx]);
+ dmxBEScreenInit(screenInfo.screens[idx]);
/* TODO: Handle GLX visual initialization. GLXProxy needs to be
* updated to handle dynamic addition/removal of screens. */
diff --git a/xorg-server/hw/dmx/dmxscrinit.c b/xorg-server/hw/dmx/dmxscrinit.c
index 37b3f3b5a..849ef16a1 100644
--- a/xorg-server/hw/dmx/dmxscrinit.c
+++ b/xorg-server/hw/dmx/dmxscrinit.c
@@ -59,7 +59,7 @@
#include "mipointer.h"
#include "micmap.h"
-extern Bool dmxCloseScreen(int idx, ScreenPtr pScreen);
+extern Bool dmxCloseScreen(ScreenPtr pScreen);
static Bool dmxSaveScreen(ScreenPtr pScreen, int what);
static unsigned long dmxGeneration;
@@ -77,9 +77,9 @@ DevPrivateKeyRec dmxGlyphSetPrivateKeyRec;
/** Initialize the parts of screen \a idx that require access to the
* back-end server. */
void
-dmxBEScreenInit(int idx, ScreenPtr pScreen)
+dmxBEScreenInit(ScreenPtr pScreen)
{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
XSetWindowAttributes attribs;
XGCValues gcvals;
unsigned long mask;
@@ -192,11 +192,11 @@ dmxBEScreenInit(int idx, ScreenPtr pScreen)
}
}
-/** Initialize screen number \a idx. */
+/** Initialize screen number \a pScreen->myNum. */
Bool
-dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[])
+dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
int i, j;
if (!dixRegisterPrivateKey(&dmxScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
@@ -286,20 +286,20 @@ dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[])
}
else {
MAXSCREENSALLOC(dmxCursorGeneration);
- if (dmxCursorGeneration[idx] != serverGeneration) {
+ if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) {
if (!(miPointerInitialize(pScreen,
&dmxPointerSpriteFuncs,
&dmxPointerCursorFuncs, FALSE)))
return FALSE;
- dmxCursorGeneration[idx] = serverGeneration;
+ dmxCursorGeneration[pScreen->myNum] = serverGeneration;
}
}
DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen);
DMX_WRAP(SaveScreen, dmxSaveScreen, dmxScreen, pScreen);
- dmxBEScreenInit(idx, pScreen);
+ dmxBEScreenInit(pScreen);
if (!dmxShadowFB) {
/* Wrap GC functions */
@@ -422,12 +422,12 @@ dmxBECloseScreen(ScreenPtr pScreen)
/** Close screen number \a idx. */
Bool
-dmxCloseScreen(int idx, ScreenPtr pScreen)
+dmxCloseScreen(ScreenPtr pScreen)
{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
/* Reset the proc vectors */
- if (idx == 0) {
+ if (pScreen->myNum == 0) {
dmxResetRender();
dmxResetFonts();
}
@@ -498,7 +498,7 @@ dmxCloseScreen(int idx, ScreenPtr pScreen)
}
DMX_UNWRAP(CloseScreen, dmxScreen, pScreen);
- return pScreen->CloseScreen(idx, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static Bool
diff --git a/xorg-server/hw/dmx/dmxscrinit.h b/xorg-server/hw/dmx/dmxscrinit.h
index 5c0bfacce..9fe9c9844 100644
--- a/xorg-server/hw/dmx/dmxscrinit.h
+++ b/xorg-server/hw/dmx/dmxscrinit.h
@@ -40,9 +40,9 @@
#include "scrnintstr.h"
-extern Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]);
+extern Bool dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[]);
-extern void dmxBEScreenInit(int idx, ScreenPtr pScreen);
+extern void dmxBEScreenInit(ScreenPtr pScreen);
extern void dmxBECloseScreen(ScreenPtr pScreen);
#endif /* DMXSCRINIT_H */
diff --git a/xorg-server/hw/dmx/doc/.gitignore b/xorg-server/hw/dmx/doc/.gitignore
new file mode 100644
index 000000000..9629c1538
--- /dev/null
+++ b/xorg-server/hw/dmx/doc/.gitignore
@@ -0,0 +1,6 @@
+*.html
+*.pdf
+*.ps
+*.txt
+!DMXSpec.txt
+!DMXSpec-v1.txt
diff --git a/xorg-server/hw/dmx/doc/DMXSpec-v1.txt b/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
index cea97b9fe..19a50f2f5 100644
--- a/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
+++ b/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
@@ -1,458 +1,458 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date$, $Revision$
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation files
- (the "Software"), to deal in the Software without restriction,
- including without limitation on the rights to use, copy, modify,
- merge, publish, distribute, sublicense, and/or sell copies of the
- Software, and to permit persons to whom the Software is furnished to
- do so, subject to the following conditions:
-
- The above copyright notice and this permission notice (including the
- next paragraph) shall be included in all copies or substantial
- portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 1 and a minorVersion of 1.
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- This request returns the number of back-end screens that the Xdmx
- server controls. A back-end screen may be managed as a regular X
- screen in the Xdmx server or may be joined with other back-end
- screens using Xinerama. (The information returned by this request
- does not change while Xdmx is running and may be cached on the
- client side.)
-
-
-
- DMXGetScreenInformation
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- width: CARD16
- height: CARD16
- xoffset: INT16
- yoffset: INT16
- logicalScreen: CARD32
- xorigin: INT16
- yorigin: INT16
-
- Errors: Value
-
- This request returns information about individual back-end screens.
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error). The
- displayname is the name used to open the display, either from the
- Xdmx command-line or from the configuration file. The width,
- height, xoffset, and yoffset values comprise a geometry
- specification (see X(7x)) for the location of the DMX window on the
- back-end screen. This request will always return non-negative
- (i.e., normalized) values for xoffset and yoffset. The
- logicalScreen value is the value of the screen that that Xdmx server
- exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the xorigin and yorigin values specify where the physical
- screen is positioned in the global Xinerama coordinate system.
- Otherwise, these values are set to 0. (The information returned by
- this request does not change while Xdmx is running and may be cached
- on the client side.)
-
-
-
- DMXGetWindowInformation
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computed the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenInformation request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible)
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowInformation call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowInformation is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputInformation
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be value, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenInformation to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenInformation).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device queried an XInput extension device, but sends core events
- instead of extension events. Note that this behavior is different
- from that of XFree86, where XInput extension devices may send both
- extension events and core events.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
-
-
- DMXReconfigureScreen
- screen: CARD32
- x: INT16
- y: INT16
- ==>
- status: CARD32
-
- Errors: Value
-
- This request was first supported in version 1.3 of this protocol.
-
- This request reconfigures the screen position to coordinates (x,y)
- when using the Xinerama extension. Otherwise, it is a NOP. Illegal
- values for screen will result in a BadValue error. Other non-fatal
- errors will be returned in status.
-
-
-
- DMXSync
- ==>
-
- This request was first supported in version 1.5 of this protocol.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by a client that
- talks directly to back-end X servers
-
- To ensure proper synchronization semantics, this request has a
- reply, but the reply does not carry any information.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenInformation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXGetScreenInformation)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 n displayNameLength
- 2 CARD16 width
- 2 CARD16 height
- 2 INT16 xoffset
- 2 INT16 yoffset
- 4 CARD32 logicalScreen
- 2 INT16 xorigin
- 2 INT16 yorigin
- 4 unused
- n displayName
- p pad(n)
-
- DMXGetWindowInformation
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowInformation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputInformation
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputInformation)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 6 unused
- n name
- p pad(n)
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
-
- DMXReconfigureScreen
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXReconfigureScreen)
- 2 2 request length
- 4 CARD32 screen
- 2 INT16 x
- 2 INT16 y
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 24 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
+
+
+ Client-to-Server DMX Extension to the X Protocol
+
+ $Date$, $Revision$
+
+ Rickard E. (Rik) Faith (faith@redhat.com)
+ Kevin E. Martin (kem@redhat.com)
+
+ Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation on the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the
+ Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+1. Overview
+
+ The client-to-server DMX extension to the X protocol (DMX) provides
+ normal client applications with the ability to determine information
+ about the characteristics of the Xdmx server and the back-end X
+ servers that DMX is using.
+
+ The name for this extension is "DMX".
+
+
+
+2. Syntactic conventions
+
+ This document uses the same syntactic conventions requests and data
+ types as [X11R6.4].
+
+
+
+3. Data types
+
+ No new data types are defined by this extension. All data types
+ referenced in this document are defined in [X11R6.4].
+
+
+
+4. Requests
+
+ DMXQueryVersion
+ ==>
+ majorVersion: CARD32
+ minorVersion: CARD32
+ patchVersion: CARD32
+
+ The protocol this extension actually supports is indicated by
+ majorVersion and minorVersion (patchVersion indicates the
+ patchlevel and is for informational purposes only).
+
+ Any incompatible changes to the protocol should be indicated by
+ incrementing majorVersion.
+
+ Small, upward-compatible changes should be indicated by incrementing
+ minorVersion.
+
+ Servers that support the protocol defined in this document will
+ return a majorVersion of 1 and a minorVersion of 1.
+
+
+
+ DMXGetScreenCount
+ ==>
+ screenCount: CARD32
+
+ This request returns the number of back-end screens that the Xdmx
+ server controls. A back-end screen may be managed as a regular X
+ screen in the Xdmx server or may be joined with other back-end
+ screens using Xinerama. (The information returned by this request
+ does not change while Xdmx is running and may be cached on the
+ client side.)
+
+
+
+ DMXGetScreenInformation
+ physicalScreen: CARD32
+ ==>
+ displayName: STRING8
+ width: CARD16
+ height: CARD16
+ xoffset: INT16
+ yoffset: INT16
+ logicalScreen: CARD32
+ xorigin: INT16
+ yorigin: INT16
+
+ Errors: Value
+
+ This request returns information about individual back-end screens.
+ The physicalScreen value is between 0 and screenCount-1, inclusive
+ (values outside this range will result in a Value error). The
+ displayname is the name used to open the display, either from the
+ Xdmx command-line or from the configuration file. The width,
+ height, xoffset, and yoffset values comprise a geometry
+ specification (see X(7x)) for the location of the DMX window on the
+ back-end screen. This request will always return non-negative
+ (i.e., normalized) values for xoffset and yoffset. The
+ logicalScreen value is the value of the screen that that Xdmx server
+ exports to clients. When Xinerama is in use, this value is
+ typically 0 for all values of physicalScreen. If Xinerama is in
+ use, the xorigin and yorigin values specify where the physical
+ screen is positioned in the global Xinerama coordinate system.
+ Otherwise, these values are set to 0. (The information returned by
+ this request does not change while Xdmx is running and may be cached
+ on the client side.)
+
+
+
+ DMXGetWindowInformation
+ window: CARD32
+ ==>
+ screenCount: CARD32
+ screens: LISTofCARD32
+ windows: LISTofCARD32
+ pos: LISTofRECTANGLE
+ vis: LISTofRECTANGLE
+
+ Errors: Window, Alloc
+
+ This request computed the return values incorrectly for version 1.0
+ of this protocol. Version 1.1 of this protocol conforms to this
+ description.
+
+ Given a window ID on the Xdmx server, this request returns data
+ about how the window is represented on the back-end X servers. For
+ each back-end X server that displays a portion of the window, the
+ following information is returned:
+ 1) the number of the physical screen containing that portion
+ (which can be used with the DMXGetScreenInformation request
+ to obtain more information about the screen),
+ 2) the window ID on the back-end X server of the window
+ containing that portion,
+ 3) the position and dimensions of the window on the back-end, in
+ screen coordinates, and
+ 4) the visible area of the window on the back-end, in
+ window-relative coordinates (all zeros for windows that are
+ not visible)
+ Note that DMX allows multiple back-end windows to overlap in their
+ view of the DMX logical window. Further, a logical window does not
+ have to be completely covered by back-end windows -- there may be
+ gaps.
+
+ As an example, consider a 500x500 window that spans the top two
+ 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
+ composed of 4 1024x768 back-end displays arranged in a cube:
+ A B
+ C D
+
+ In this case, the DMXGetWindowInformation call would return the
+ following information for the 500x500 window:
+
+ display A: 500x500 window at 1024-250,0 (relative to back end)
+ with 250x500 visible at 0,0 (relative to window origin)
+
+ display B: 500x500 window at -250,0 (relative to back end)
+ with 250x500 visible at 250,0 (relative to window origin)
+
+ display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
+
+ display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
+
+ Note that if the specified window has not yet been mapped when
+ DMXGetWindowInformation is called, then a subsequent XMapWindow call
+ might be buffered in xlib while requests directly to the back-end X
+ servers are processed. This race condition can be solved by calling
+ DMXSync before talking directly to the back-end X servers.
+
+
+ DMXGetInputCount
+ ==>
+ inputCount: CARD32
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns the number of input devices connected to the
+ Xdmx server. This number is the same as that returned by
+ XListInputDevices, but is available even when the XInput extension
+ is not supported.
+
+
+
+ DMXGetInputInformation
+ deviceId: CARD32
+ ==>
+ inputType: CARD32
+ physicalScreen: CARD32
+ physicalId: CARD32
+ isCore: BOOL
+ sendsCore: BOOL
+ name: STRING8
+
+ Errors: Value
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns information about the specified input device
+ that cannot be obtained from the XListInputDeivices call. The
+ deviceId is the same as that used by the XListInputDevices call, and
+ must be in the range 0 to inputCount-1, inclusive (values outside
+ this range will result in a Value error).
+
+ The value of inputType will always be value, and will be one of the
+ following values:
+ 0 for local (and dummy) devices,
+ 1 for console devices, and
+ 2 for back-end devices.
+
+ For local devices, all other fields returned, except isCore and
+ sendsCore, are invalid.
+
+ For console devices, the physicalScreen and physicalID will be
+ invalid, and the name will return the name of the X server on which
+ the console window is displayed.
+
+ For back-end devices, the physicalScreen will identify the back-end
+ display and can be used as an argument to DMXGetScreenInformation to
+ obtain more information; the physicalId will be the XInput device id
+ on the back-end X server; and the name will be invalid (since it
+ does not provide any additional information that cannot be obtained
+ with DMXGetScreenInformation).
+
+ If isCore is True, then this device is active as a true core input
+ device and will send core events. If sendsCore is True, then this
+ device queried an XInput extension device, but sends core events
+ instead of extension events. Note that this behavior is different
+ from that of XFree86, where XInput extension devices may send both
+ extension events and core events.
+
+
+
+ DMXForceWindowCreation
+ window: CARD32
+ ==>
+
+ Errors: Window
+
+ This request was first supported in version 1.2 of this protocol.
+
+ When using the lazy window creation optimization, windows are not
+ created on the back-end X servers until they are required. This
+ request forces the immediate creation of the window requested.
+
+
+
+ DMXReconfigureScreen
+ screen: CARD32
+ x: INT16
+ y: INT16
+ ==>
+ status: CARD32
+
+ Errors: Value
+
+ This request was first supported in version 1.3 of this protocol.
+
+ This request reconfigures the screen position to coordinates (x,y)
+ when using the Xinerama extension. Otherwise, it is a NOP. Illegal
+ values for screen will result in a BadValue error. Other non-fatal
+ errors will be returned in status.
+
+
+
+ DMXSync
+ ==>
+
+ This request was first supported in version 1.5 of this protocol.
+
+ This request flushes all pending protocol requests between the Xdmx
+ server and each back-end X server. It is used by a client that
+ talks directly to back-end X servers
+
+ To ensure proper synchronization semantics, this request has a
+ reply, but the reply does not carry any information.
+
+
+
+5. Events
+
+ No new events are defined by this extension.
+
+
+
+6. Errors
+
+ No new events are defined by this extension.
+
+
+
+7. Encoding
+
+ DMXQueryVersion
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXQueryVersion)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 majorVersion
+ 4 CARD32 minorVersion
+ 4 CARD32 patchVersion
+ 12 unused
+
+ DMXGetScreenCount
+ 1 CARD8 opcode (X assigned)
+ 1 1 DMX opcode (X_DMXGetScreenCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 screenCount
+ 20 unused
+
+ DMXGetScreenInformation
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXGetScreenInformation)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n/4+p reply length
+ 4 n displayNameLength
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 INT16 xoffset
+ 2 INT16 yoffset
+ 4 CARD32 logicalScreen
+ 2 INT16 xorigin
+ 2 INT16 yorigin
+ 4 unused
+ n displayName
+ p pad(n)
+
+ DMXGetWindowInformation
+ 1 CARD8 opcode (X assigned)
+ 1 3 DMX opcode (X_DMXGetWindowInformation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n*6 reply length
+ 4 n screenCount
+ 20 unused
+ n*4 LISTofCARD32 screens
+ n*4 LISTofCARD32 windows
+ n*8 LISTofRECTANGLE pos
+ n*8 LISTofRECTANGLE vis
+
+ DMXGetInputCount
+ 1 CARD8 opcode (X assigned)
+ 1 DMX opcode (X_DMXGetInputCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 inputCount
+ 20 unused
+
+ DMXGetInputInformation
+ 1 CARD8 opcode (X assigned)
+ 1 4 DMX opcode (X_DMXGetInputInformation)
+ 2 2 request length
+ 4 CARD32 deviceId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n/4+p reply length
+ 4 CARD32 inputType
+ 4 CARD32 physicalScreen
+ 4 CARD32 physicalId
+ 4 n nameLength
+ 1 BOOL isCore
+ 1 BOOL sendsCore
+ 6 unused
+ n name
+ p pad(n)
+
+ DMXForceWindowCreation
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXForceWindowCreation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+
+ DMXReconfigureScreen
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXReconfigureScreen)
+ 2 2 request length
+ 4 CARD32 screen
+ 2 INT16 x
+ 2 INT16 y
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXSync
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXSync)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+
+
+8. Changes to existing requests/replies/events
+
+ No changes to existing requests, replies, or events are necessitated
+ by this extension.
+
+
+
+9. Acknowledgments
+
+
+
+10. References
+
+ [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
+ Standard, X Version 11, Release 6.4. Available from
+ xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/xorg-server/hw/dmx/doc/DMXSpec.txt b/xorg-server/hw/dmx/doc/DMXSpec.txt
index 4009f1210..078f83e26 100644
--- a/xorg-server/hw/dmx/doc/DMXSpec.txt
+++ b/xorg-server/hw/dmx/doc/DMXSpec.txt
@@ -1,875 +1,875 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date$, $Revision$
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation files
- (the "Software"), to deal in the Software without restriction,
- including without limitation on the rights to use, copy, modify,
- merge, publish, distribute, sublicense, and/or sell copies of the
- Software, and to permit persons to whom the Software is furnished to
- do so, subject to the following conditions:
-
- The above copyright notice and this permission notice (including the
- next paragraph) shall be included in all copies or substantial
- portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- Errors: None
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 2 and a minorVersion of 2.
-
- (Version 1.5 was the last version in the 1.x series; version 2.0 was
- a testing version that was poorly defined.)
-
-
-
- DMXSync
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 1.5 of this protocol.
- The status field in the reply was introduced in version 2.0 of this
- protocol. Since the status field is ignored, no changes to the
- underlying protocol were required.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by clients that
- talk directly to back-end X servers to ensure that all pending Xdmx
- requests have reached all back-end servers and have been processed
- by those servers.
-
- The value of status is always 0.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
- status: CARD32
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
- This request was changed to have a reply in version 2.0 of this
- protocol. The old version of this request was deprecated and will
- return BadImplementation.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
- The value of status is always 0.
-
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- Errors: None
-
- This request returns the number of screens that the Xdmx server
- controls. Since a DMX screen usually fills all of the available
- area on a back-end server, there is usually a one-to-one
- correspondence between DMX screens and backend servers. However, it
- is also possible for a DMX screen to cover only part of the
- available area on a back-end server, and for more than one DMX
- screen to occupy different parts of the visible area on the same
- back-end server.
-
- A DMX screen may be managed as a regular X screen in the Xdmx server
- or may be joined with other DMX screens using Xinerama.
-
-
-
- DMXGetScreenAttributes
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- logicalScreen: CARD32
- screenWindowWidth: CARD16
- screenWindowHeight: CARD16
- screenWindowXoffset: INT16
- screenWindowYoffset: INT16
- rootWindowWidth: CARD16
- rootWindowHeight: CARD16
- rootWindowXoffset: INT16
- rootWindowYoffset: INT16
- rootWindowXorigin: INT16
- rootWindowYorigin: INT16
-
- Errors: Value
-
- This request is new in version 2.0 of this protocol. The old
- DMXGetScreenInformation request is deprecated and will now return
- BadImplementation.
-
- This request returns attributes about a single DMX screen.
-
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error).
-
- The displayname is the name used to open the display, either from
- the Xdmx command-line or from the configuration file.
-
- The logicalScreen value is the value of the screen that that Xdmx
- server exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the rootWindowXOrigin and rootWindowYOrigin values specify
- where the physical screen is positioned in the global Xinerama
- coordinate system. Otherwise, these values are set to 0.
-
- The screenWindow values comprise a geometry specification (see
- X(7x)) for the location of the DMX screen on the back-end screen.
- The coordinant system of the back-end display is used.
-
- The first four rootWindow values comprise a geometry specification
- (see X(7x)) for the location of the root window on the screen
- window. The coordinant system of the screen window is used. In
- most cases, the root window will have the same geometry as the DMX
- screen window, and will occupy the same area of the back-end
- display. (This would not be the case, for example, if automatic
- projector alignment is used.)
-
-
-
- DMXChangeScreensAttributes
- screenCount: CARD32
- maskCount: CARD32
- screens: LISTofCARD32
- valueMasks: LISTofCARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- errorScreen: CARD32
-
- Errors: Length, Alloc
-
- This request was first supported in version 2.0 of this protocol.
- (A singular version of this request with the ability to change some
- RootWindow attributes was supported in version 1.3 of this protocol,
- has been deprecated, and will return BadImplementation.)
-
- This request changes the geometries and positions of the DMX screen
- and DMX root windows on the back-end X servers.
-
- The valueMask and valueList specify which attributes are to be
- changed. The possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The resulting position is not allowed
- (e.g., one corner is outside the bounding box)
- On error, errorScreen will contain the number of the screen that
- caused the first error.
-
-
-
- DMXAddScreen
- displayName: STRING8
- physicalScreen: CARD32
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalScreen: CARD32
-
- Errors: Length, Alloc, Value
-
- This request was first supported in version 2.2 of this protocol.
-
- This request re-attaches the back-end physicalScreen to the Xdmx
- server. Only back-end screens that have been previously detached
- with DMXRemoveScreen may be added. The name of the back-end display
- is given in displayName, and this will replace the name of the
- back-end screen that was detached. Both the displayName and
- physicalScreen must be correct for this request to work.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- On success, status will be 0 and physicalScreen will contain the new
- screen number. On failure, status will be non-zero. The status
- will be 1 if any of the following occured:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * physicalScreen has not been detached (with DMXRemoveScreen)
- * displayName cannot be opened
- * the visuals of displayname do not match the visuals that Xdmx
- is using
- * the screen data for displayName does not match the data for the
- previously removed display
- The status will be DmxBadValue if the attribute values are out of
- range.
-
-
-
- DMXRemoveScreen
- physicalScreen: CARD32
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the physicalScreen screen.
-
- On success, status will be 0. On failure, the status will 1 if any
- of the following occur:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * the back-end screen has already been detached.
-
-
-
- DMXGetWindowAttributes
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computes the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description. In version 2.0, the name of this request was changed
- from DMXGetWindowInformation. However, since the request itself did
- not change, no changes to the underlying protocol were made.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenAttributes request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible).
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowAttributes call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowAttributes is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
-
- DMXGetDesktopAttributes
- ==>
- width: INT16
- height: INT16
- shiftX: INT16
- shiftY: INT16
-
- Errors: None
-
- This request was first supported in version 2.0 of this protocol.
-
- This request returns the size of the bounding box of the whole
- screen in width and height. The shiftX and shiftY values will
- always be 0. The global bounding box is computed whether or not
- Xinerama is active, and may be larger than the Xinerama screen size
- because of information in the configuration file.
-
-
-
- DMXChangeDesktopAttributes
- valueMask: BITMASK
- valueList: LISTofVALUE
- ==>
- status: CARD32
-
- Errors: Length, Value
-
- This request was first supported in version 2.0 of this protocol.
-
- This request resizes the bounding box of the whole screen when using
- the Xinerama extension. Otherwise, it has no effect on the screen
- layout. The valueMask and valueList specify which attributes are to
- be changed. The possible values are:
-
- Attriubute Type
-
- Width INT16
- Height INT16
- ShiftX INT16
- ShiftY INT16
-
- Width and Height specify the new width and height for the bounding
- box. ShiftX and ShiftY specify where the Xinerama origin will be
- placed with respect to the origin of the new bounding box. This
- allows the left and upper edges of the bounding box to be changed
- without changing the visual position of the windows on the desktop.
- If Width or Height is not specified, the current values will be
- used. If ShiftX or ShiftY is not specified, 0 will be used.
-
- All coordinants are in the global DMX coordinant system. If
- Xinerama is not active, this request is not useful.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The size of the bounding box is too large
-
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputAttributes
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- detached: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
- In version 2.0, the name of this request was changed from
- DMXGetInputInformation. However, since the request itself did not
- change, no changes to the underlying protocol were made. In version
- 2.2, the name of detached was changed from reservation. There was
- no change in underlying protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be valid, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenAttributes to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenAttributes).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device is an XInput extension device, but sends core events instead
- of extension events. Note that this behavior is different from that
- of XFree86 or Xorg, where XInput extension devices may send both
- extension events and core events.
-
- If detached is True, then this device has been detached and is no
- longer producing input events. The device may be reattached using
- DMXAddInput.
-
-
-
- DMXAddInput
- displayName: STRING8
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalId: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- InputType CARD32
- InputPhysicalScreen CARD32
- InputSendsCore BOOL
-
- This request attaches an input device to the Xdmx server. The value
- of inputType will be one:
- 1 for console devices, and
- 2 for back-end devices.
- Other values of InputType will return a BadValue error. Local
- devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
- removed. For console devices, displayName will store the name of
- the display to be used.
-
- For back-end devices, InputPhysicalScreen will specify the screen
- number. BadValue will be returned if the screen number is out of
- range. BadAccess will be returned if the input has already been
- attached or if the backend screen is currently detached.
-
- If InputSendsCore is True, the new device will be added as a true
- core device.
-
- If a device was removed with DMXRemoveInput an attempt will be made
- to reconnect the previous devices (InputSendsCore is ignored in this
- case).
-
-
-
- DMXRemoveInput
- physicalId: CARD32
- ==>
- status: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the input device with physicalId, and all
- associated inputs (e.g., if the physicalId is a backend mouse, and a
- keyboard is also attached to the backend, then both devices will be
- detached). If the physicalId is outside the valid range (0 to one
- less than the value returned by DMXInputCount), BadValue is
- returned. If the physicalId has already been detached, BadAccess is
- returned. The status is always 0.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- Deprecated DMX opcodes:
- DMXGetScreenInformation 2
- DMXForceWindowCreation 6
- DMXReconfigureScreen 7
-
- Valid DMX opcodes:
- DMXQueryVersion 0
- DMXSync 8
- DMXForceWindowCreation 9
-
- DMXGetScreenCount 1
- DMXGetScreenAttributes 10
- DMXChangeScreensAttributes 11
- DMXAddScreen 12
- DMXRemoveScreen 13
-
- DMXGetWindowAttributes 3
-
- DMXGetDesktopAttributes 14
- DMXChangeDesktopAttributes 15
-
- DMXGetInputCount 4
- DMXGetInputAttributes 5
- DMXAddInput 16
- DMXRemoveInput 17
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 8 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 9 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenAttributes
- 1 CARD8 opcode (X assigned)
- 1 10 DMX opcode (X_DMXGetScreenAttributes)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 1+(n+p)/4 reply length
- 4 n displayNameLength
- 4 CARD32 logicalScreen
- 2 CARD16 screenWindowWidth
- 2 CARD16 screenWindowHeight
- 2 INT16 screenWindowXoffset
- 2 INT16 screenWindowYoffset
- 2 CARD16 rootWindowWidth
- 2 CARD16 rootWindowHeight
- 2 INT16 rootWindowXoffset
- 2 INT16 rootWindowYoffset
- 2 INT16 rootWindowXorigin
- 2 INT16 rootWindowYorigin
- n displayName
- p pad(n)
-
- DMXChangeScreensAttributes
- 1 CARD8 opcode (X assigned)
- 1 11 DMX opcode (X_DMXChangeScreenAttributes)
- 2 3+s+m+n request length
- 4 s screenCount
- 4 m maskCount
- 4s LISTofCARD32 screens
- 4m LISTofCARD32 valueMasks
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 errorScreen
- 16 unused
-
-
- DMXAddScreen
- 1 CARD8 opcode (X assigned)
- 1 12 DMX opcode (X_DMXAddScreen)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 physicalScreen
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalScreen
- 16 unused
-
- DMXRemoveScreen
- 1 CARD8 opcode (X assigned)
- 1 13 DMX opcode (X_DMXRemoveScreen)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetWindowAttributes
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowAttributes)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 14 DMX opcode (X_DMXGetDesktopAttributes)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 2 INT16 width
- 2 INT16 height
- 2 INT16 shiftX
- 2 INT16 shiftY
- 16 unused
-
- DMXChangeDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
- 2 2+n request length
- 4 BITMASK valueMask
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputAttributes
- 1 CARD8 opcode (X assigned)
- 1 5 DMX opcode (X_DMXGetInputAttributes)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 (n+p)/4 reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 1 BOOL detached
- 5 unused
- n name
- p pad(n)
-
- DMXAddInput
- 1 CARD8 opcode (X assigned)
- 1 16 DMX opcode (X_DMXAddInput)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalId
- 16 unused
-
- DMXRemoveInput
- 1 CARD8 opcode (X assigned)
- 1 17 DMX opcode (X_DMXRemoveInput)
- 2 3 request length
- 4 CARD32 physicalId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
+
+
+ Client-to-Server DMX Extension to the X Protocol
+
+ $Date$, $Revision$
+
+ Rickard E. (Rik) Faith (faith@redhat.com)
+ Kevin E. Martin (kem@redhat.com)
+
+ Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation on the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the
+ Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+1. Overview
+
+ The client-to-server DMX extension to the X protocol (DMX) provides
+ normal client applications with the ability to determine information
+ about the characteristics of the Xdmx server and the back-end X
+ servers that DMX is using.
+
+ The name for this extension is "DMX".
+
+
+
+2. Syntactic conventions
+
+ This document uses the same syntactic conventions requests and data
+ types as [X11R6.4].
+
+
+
+3. Data types
+
+ No new data types are defined by this extension. All data types
+ referenced in this document are defined in [X11R6.4].
+
+
+
+4. Requests
+
+ DMXQueryVersion
+ ==>
+ majorVersion: CARD32
+ minorVersion: CARD32
+ patchVersion: CARD32
+
+ Errors: None
+
+ The protocol this extension actually supports is indicated by
+ majorVersion and minorVersion (patchVersion indicates the
+ patchlevel and is for informational purposes only).
+
+ Any incompatible changes to the protocol should be indicated by
+ incrementing majorVersion.
+
+ Small, upward-compatible changes should be indicated by incrementing
+ minorVersion.
+
+ Servers that support the protocol defined in this document will
+ return a majorVersion of 2 and a minorVersion of 2.
+
+ (Version 1.5 was the last version in the 1.x series; version 2.0 was
+ a testing version that was poorly defined.)
+
+
+
+ DMXSync
+ ==>
+ status: CARD32
+
+ Errors: None
+
+ This request was first supported in version 1.5 of this protocol.
+ The status field in the reply was introduced in version 2.0 of this
+ protocol. Since the status field is ignored, no changes to the
+ underlying protocol were required.
+
+ This request flushes all pending protocol requests between the Xdmx
+ server and each back-end X server. It is used by clients that
+ talk directly to back-end X servers to ensure that all pending Xdmx
+ requests have reached all back-end servers and have been processed
+ by those servers.
+
+ The value of status is always 0.
+
+
+
+ DMXForceWindowCreation
+ window: CARD32
+ ==>
+ status: CARD32
+
+ Errors: Window
+
+ This request was first supported in version 1.2 of this protocol.
+ This request was changed to have a reply in version 2.0 of this
+ protocol. The old version of this request was deprecated and will
+ return BadImplementation.
+
+ When using the lazy window creation optimization, windows are not
+ created on the back-end X servers until they are required. This
+ request forces the immediate creation of the window requested.
+
+ The value of status is always 0.
+
+
+
+
+ DMXGetScreenCount
+ ==>
+ screenCount: CARD32
+
+ Errors: None
+
+ This request returns the number of screens that the Xdmx server
+ controls. Since a DMX screen usually fills all of the available
+ area on a back-end server, there is usually a one-to-one
+ correspondence between DMX screens and backend servers. However, it
+ is also possible for a DMX screen to cover only part of the
+ available area on a back-end server, and for more than one DMX
+ screen to occupy different parts of the visible area on the same
+ back-end server.
+
+ A DMX screen may be managed as a regular X screen in the Xdmx server
+ or may be joined with other DMX screens using Xinerama.
+
+
+
+ DMXGetScreenAttributes
+ physicalScreen: CARD32
+ ==>
+ displayName: STRING8
+ logicalScreen: CARD32
+ screenWindowWidth: CARD16
+ screenWindowHeight: CARD16
+ screenWindowXoffset: INT16
+ screenWindowYoffset: INT16
+ rootWindowWidth: CARD16
+ rootWindowHeight: CARD16
+ rootWindowXoffset: INT16
+ rootWindowYoffset: INT16
+ rootWindowXorigin: INT16
+ rootWindowYorigin: INT16
+
+ Errors: Value
+
+ This request is new in version 2.0 of this protocol. The old
+ DMXGetScreenInformation request is deprecated and will now return
+ BadImplementation.
+
+ This request returns attributes about a single DMX screen.
+
+ The physicalScreen value is between 0 and screenCount-1, inclusive
+ (values outside this range will result in a Value error).
+
+ The displayname is the name used to open the display, either from
+ the Xdmx command-line or from the configuration file.
+
+ The logicalScreen value is the value of the screen that that Xdmx
+ server exports to clients. When Xinerama is in use, this value is
+ typically 0 for all values of physicalScreen. If Xinerama is in
+ use, the rootWindowXOrigin and rootWindowYOrigin values specify
+ where the physical screen is positioned in the global Xinerama
+ coordinate system. Otherwise, these values are set to 0.
+
+ The screenWindow values comprise a geometry specification (see
+ X(7x)) for the location of the DMX screen on the back-end screen.
+ The coordinant system of the back-end display is used.
+
+ The first four rootWindow values comprise a geometry specification
+ (see X(7x)) for the location of the root window on the screen
+ window. The coordinant system of the screen window is used. In
+ most cases, the root window will have the same geometry as the DMX
+ screen window, and will occupy the same area of the back-end
+ display. (This would not be the case, for example, if automatic
+ projector alignment is used.)
+
+
+
+ DMXChangeScreensAttributes
+ screenCount: CARD32
+ maskCount: CARD32
+ screens: LISTofCARD32
+ valueMasks: LISTofCARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ errorScreen: CARD32
+
+ Errors: Length, Alloc
+
+ This request was first supported in version 2.0 of this protocol.
+ (A singular version of this request with the ability to change some
+ RootWindow attributes was supported in version 1.3 of this protocol,
+ has been deprecated, and will return BadImplementation.)
+
+ This request changes the geometries and positions of the DMX screen
+ and DMX root windows on the back-end X servers.
+
+ The valueMask and valueList specify which attributes are to be
+ changed. The possible values are:
+
+ Attribute Type
+
+ ScreenWindowWidth CARD16
+ ScreenWindowHeight CARD16
+ ScreenWindowXoffset INT16
+ ScreenWindowYoffset INT16
+ RootWindowWidth CARD16
+ RootWindowHeight CARD16
+ RootWindowXoffset INT16
+ RootWindowYoffset INT16
+ RootWindowXorigin INT16
+ RootWindowYorigin INT16
+
+ The attribute values have the same meaning as do the corresponding
+ values for DMXGetScreenAttributes.
+
+ Non-fatal errors will be returned in status (0 otherwise):
+ DmxBadXinerama: Xinerama is not active
+ DmxBadValue: The resulting position is not allowed
+ (e.g., one corner is outside the bounding box)
+ On error, errorScreen will contain the number of the screen that
+ caused the first error.
+
+
+
+ DMXAddScreen
+ displayName: STRING8
+ physicalScreen: CARD32
+ valueMask: CARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ physicalScreen: CARD32
+
+ Errors: Length, Alloc, Value
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request re-attaches the back-end physicalScreen to the Xdmx
+ server. Only back-end screens that have been previously detached
+ with DMXRemoveScreen may be added. The name of the back-end display
+ is given in displayName, and this will replace the name of the
+ back-end screen that was detached. Both the displayName and
+ physicalScreen must be correct for this request to work.
+
+ The valueMask and valueList specify the attributes to be used. The
+ possible values are:
+
+ Attribute Type
+
+ ScreenWindowWidth CARD16
+ ScreenWindowHeight CARD16
+ ScreenWindowXoffset INT16
+ ScreenWindowYoffset INT16
+ RootWindowWidth CARD16
+ RootWindowHeight CARD16
+ RootWindowXoffset INT16
+ RootWindowYoffset INT16
+ RootWindowXorigin INT16
+ RootWindowYorigin INT16
+
+ The attribute values have the same meaning as do the corresponding
+ values for DMXGetScreenAttributes.
+
+ On success, status will be 0 and physicalScreen will contain the new
+ screen number. On failure, status will be non-zero. The status
+ will be 1 if any of the following occured:
+ * the -addremovescreens command-line option was not specified on
+ the Xdmx command line
+ * the value of physicalScreen is out of range
+ * physicalScreen has not been detached (with DMXRemoveScreen)
+ * displayName cannot be opened
+ * the visuals of displayname do not match the visuals that Xdmx
+ is using
+ * the screen data for displayName does not match the data for the
+ previously removed display
+ The status will be DmxBadValue if the attribute values are out of
+ range.
+
+
+
+ DMXRemoveScreen
+ physicalScreen: CARD32
+ ==>
+ status: CARD32
+
+ Errors: None
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request detaches the physicalScreen screen.
+
+ On success, status will be 0. On failure, the status will 1 if any
+ of the following occur:
+ * the -addremovescreens command-line option was not specified on
+ the Xdmx command line
+ * the value of physicalScreen is out of range
+ * the back-end screen has already been detached.
+
+
+
+ DMXGetWindowAttributes
+ window: CARD32
+ ==>
+ screenCount: CARD32
+ screens: LISTofCARD32
+ windows: LISTofCARD32
+ pos: LISTofRECTANGLE
+ vis: LISTofRECTANGLE
+
+ Errors: Window, Alloc
+
+ This request computes the return values incorrectly for version 1.0
+ of this protocol. Version 1.1 of this protocol conforms to this
+ description. In version 2.0, the name of this request was changed
+ from DMXGetWindowInformation. However, since the request itself did
+ not change, no changes to the underlying protocol were made.
+
+ Given a window ID on the Xdmx server, this request returns data
+ about how the window is represented on the back-end X servers. For
+ each back-end X server that displays a portion of the window, the
+ following information is returned:
+ 1) the number of the physical screen containing that portion
+ (which can be used with the DMXGetScreenAttributes request
+ to obtain more information about the screen),
+ 2) the window ID on the back-end X server of the window
+ containing that portion,
+ 3) the position and dimensions of the window on the back-end, in
+ screen coordinates, and
+ 4) the visible area of the window on the back-end, in
+ window-relative coordinates (all zeros for windows that are
+ not visible).
+ Note that DMX allows multiple back-end windows to overlap in their
+ view of the DMX logical window. Further, a logical window does not
+ have to be completely covered by back-end windows -- there may be
+ gaps.
+
+ As an example, consider a 500x500 window that spans the top two
+ 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
+ composed of 4 1024x768 back-end displays arranged in a cube:
+ A B
+ C D
+
+ In this case, the DMXGetWindowAttributes call would return the
+ following information for the 500x500 window:
+
+ display A: 500x500 window at 1024-250,0 (relative to back end)
+ with 250x500 visible at 0,0 (relative to window origin)
+
+ display B: 500x500 window at -250,0 (relative to back end)
+ with 250x500 visible at 250,0 (relative to window origin)
+
+ display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
+
+ display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
+
+ Note that if the specified window has not yet been mapped when
+ DMXGetWindowAttributes is called, then a subsequent XMapWindow call
+ might be buffered in xlib while requests directly to the back-end X
+ servers are processed. This race condition can be solved by calling
+ DMXSync before talking directly to the back-end X servers.
+
+
+
+ DMXGetDesktopAttributes
+ ==>
+ width: INT16
+ height: INT16
+ shiftX: INT16
+ shiftY: INT16
+
+ Errors: None
+
+ This request was first supported in version 2.0 of this protocol.
+
+ This request returns the size of the bounding box of the whole
+ screen in width and height. The shiftX and shiftY values will
+ always be 0. The global bounding box is computed whether or not
+ Xinerama is active, and may be larger than the Xinerama screen size
+ because of information in the configuration file.
+
+
+
+ DMXChangeDesktopAttributes
+ valueMask: BITMASK
+ valueList: LISTofVALUE
+ ==>
+ status: CARD32
+
+ Errors: Length, Value
+
+ This request was first supported in version 2.0 of this protocol.
+
+ This request resizes the bounding box of the whole screen when using
+ the Xinerama extension. Otherwise, it has no effect on the screen
+ layout. The valueMask and valueList specify which attributes are to
+ be changed. The possible values are:
+
+ Attriubute Type
+
+ Width INT16
+ Height INT16
+ ShiftX INT16
+ ShiftY INT16
+
+ Width and Height specify the new width and height for the bounding
+ box. ShiftX and ShiftY specify where the Xinerama origin will be
+ placed with respect to the origin of the new bounding box. This
+ allows the left and upper edges of the bounding box to be changed
+ without changing the visual position of the windows on the desktop.
+ If Width or Height is not specified, the current values will be
+ used. If ShiftX or ShiftY is not specified, 0 will be used.
+
+ All coordinants are in the global DMX coordinant system. If
+ Xinerama is not active, this request is not useful.
+
+ Non-fatal errors will be returned in status (0 otherwise):
+ DmxBadXinerama: Xinerama is not active
+ DmxBadValue: The size of the bounding box is too large
+
+
+
+ DMXGetInputCount
+ ==>
+ inputCount: CARD32
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns the number of input devices connected to the
+ Xdmx server. This number is the same as that returned by
+ XListInputDevices, but is available even when the XInput extension
+ is not supported.
+
+
+
+ DMXGetInputAttributes
+ deviceId: CARD32
+ ==>
+ inputType: CARD32
+ physicalScreen: CARD32
+ physicalId: CARD32
+ isCore: BOOL
+ sendsCore: BOOL
+ detached: BOOL
+ name: STRING8
+
+ Errors: Value
+
+ This request was first supported in version 1.1 of this protocol.
+ In version 2.0, the name of this request was changed from
+ DMXGetInputInformation. However, since the request itself did not
+ change, no changes to the underlying protocol were made. In version
+ 2.2, the name of detached was changed from reservation. There was
+ no change in underlying protocol.
+
+ This request returns information about the specified input device
+ that cannot be obtained from the XListInputDeivices call. The
+ deviceId is the same as that used by the XListInputDevices call, and
+ must be in the range 0 to inputCount-1, inclusive (values outside
+ this range will result in a Value error).
+
+ The value of inputType will always be valid, and will be one of the
+ following values:
+ 0 for local (and dummy) devices,
+ 1 for console devices, and
+ 2 for back-end devices.
+
+ For local devices, all other fields returned, except isCore and
+ sendsCore, are invalid.
+
+ For console devices, the physicalScreen and physicalID will be
+ invalid, and the name will return the name of the X server on which
+ the console window is displayed.
+
+ For back-end devices, the physicalScreen will identify the back-end
+ display and can be used as an argument to DMXGetScreenAttributes to
+ obtain more information; the physicalId will be the XInput device id
+ on the back-end X server; and the name will be invalid (since it
+ does not provide any additional information that cannot be obtained
+ with DMXGetScreenAttributes).
+
+ If isCore is True, then this device is active as a true core input
+ device and will send core events. If sendsCore is True, then this
+ device is an XInput extension device, but sends core events instead
+ of extension events. Note that this behavior is different from that
+ of XFree86 or Xorg, where XInput extension devices may send both
+ extension events and core events.
+
+ If detached is True, then this device has been detached and is no
+ longer producing input events. The device may be reattached using
+ DMXAddInput.
+
+
+
+ DMXAddInput
+ displayName: STRING8
+ valueMask: CARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ physicalId: CARD32
+
+ Errors: Value, Access
+
+ This request was first supported in version 2.2 of this protocol.
+
+ The valueMask and valueList specify the attributes to be used. The
+ possible values are:
+
+ Attribute Type
+
+ InputType CARD32
+ InputPhysicalScreen CARD32
+ InputSendsCore BOOL
+
+ This request attaches an input device to the Xdmx server. The value
+ of inputType will be one:
+ 1 for console devices, and
+ 2 for back-end devices.
+ Other values of InputType will return a BadValue error. Local
+ devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
+ removed. For console devices, displayName will store the name of
+ the display to be used.
+
+ For back-end devices, InputPhysicalScreen will specify the screen
+ number. BadValue will be returned if the screen number is out of
+ range. BadAccess will be returned if the input has already been
+ attached or if the backend screen is currently detached.
+
+ If InputSendsCore is True, the new device will be added as a true
+ core device.
+
+ If a device was removed with DMXRemoveInput an attempt will be made
+ to reconnect the previous devices (InputSendsCore is ignored in this
+ case).
+
+
+
+ DMXRemoveInput
+ physicalId: CARD32
+ ==>
+ status: CARD32
+
+ Errors: Value, Access
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request detaches the input device with physicalId, and all
+ associated inputs (e.g., if the physicalId is a backend mouse, and a
+ keyboard is also attached to the backend, then both devices will be
+ detached). If the physicalId is outside the valid range (0 to one
+ less than the value returned by DMXInputCount), BadValue is
+ returned. If the physicalId has already been detached, BadAccess is
+ returned. The status is always 0.
+
+
+
+5. Events
+
+ No new events are defined by this extension.
+
+
+
+6. Errors
+
+ No new events are defined by this extension.
+
+
+
+7. Encoding
+
+ Deprecated DMX opcodes:
+ DMXGetScreenInformation 2
+ DMXForceWindowCreation 6
+ DMXReconfigureScreen 7
+
+ Valid DMX opcodes:
+ DMXQueryVersion 0
+ DMXSync 8
+ DMXForceWindowCreation 9
+
+ DMXGetScreenCount 1
+ DMXGetScreenAttributes 10
+ DMXChangeScreensAttributes 11
+ DMXAddScreen 12
+ DMXRemoveScreen 13
+
+ DMXGetWindowAttributes 3
+
+ DMXGetDesktopAttributes 14
+ DMXChangeDesktopAttributes 15
+
+ DMXGetInputCount 4
+ DMXGetInputAttributes 5
+ DMXAddInput 16
+ DMXRemoveInput 17
+
+ DMXQueryVersion
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXQueryVersion)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 majorVersion
+ 4 CARD32 minorVersion
+ 4 CARD32 patchVersion
+ 12 unused
+
+ DMXSync
+ 1 CARD8 opcode (X assigned)
+ 1 8 DMX opcode (X_DMXSync)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXForceWindowCreation
+ 1 CARD8 opcode (X assigned)
+ 1 9 DMX opcode (X_DMXForceWindowCreation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+
+ DMXGetScreenCount
+ 1 CARD8 opcode (X assigned)
+ 1 1 DMX opcode (X_DMXGetScreenCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 screenCount
+ 20 unused
+
+ DMXGetScreenAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 10 DMX opcode (X_DMXGetScreenAttributes)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 1+(n+p)/4 reply length
+ 4 n displayNameLength
+ 4 CARD32 logicalScreen
+ 2 CARD16 screenWindowWidth
+ 2 CARD16 screenWindowHeight
+ 2 INT16 screenWindowXoffset
+ 2 INT16 screenWindowYoffset
+ 2 CARD16 rootWindowWidth
+ 2 CARD16 rootWindowHeight
+ 2 INT16 rootWindowXoffset
+ 2 INT16 rootWindowYoffset
+ 2 INT16 rootWindowXorigin
+ 2 INT16 rootWindowYorigin
+ n displayName
+ p pad(n)
+
+ DMXChangeScreensAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 11 DMX opcode (X_DMXChangeScreenAttributes)
+ 2 3+s+m+n request length
+ 4 s screenCount
+ 4 m maskCount
+ 4s LISTofCARD32 screens
+ 4m LISTofCARD32 valueMasks
+ 4n LISTofVALUES valueList
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 errorScreen
+ 16 unused
+
+
+ DMXAddScreen
+ 1 CARD8 opcode (X assigned)
+ 1 12 DMX opcode (X_DMXAddScreen)
+ 2 3+m+(n+p)/4 request length
+ 4 n displayNameLength
+ 4 CARD32 physicalScreen
+ 4 CARD32 valueMask
+ 4m LISTofVALUES valueList
+ n displayName
+ p pad(n)
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 physicalScreen
+ 16 unused
+
+ DMXRemoveScreen
+ 1 CARD8 opcode (X assigned)
+ 1 13 DMX opcode (X_DMXRemoveScreen)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXGetWindowAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 3 DMX opcode (X_DMXGetWindowAttributes)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n*6 reply length
+ 4 n screenCount
+ 20 unused
+ n*4 LISTofCARD32 screens
+ n*4 LISTofCARD32 windows
+ n*8 LISTofRECTANGLE pos
+ n*8 LISTofRECTANGLE vis
+
+ DMXGetDesktopAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 14 DMX opcode (X_DMXGetDesktopAttributes)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 INT16 width
+ 2 INT16 height
+ 2 INT16 shiftX
+ 2 INT16 shiftY
+ 16 unused
+
+ DMXChangeDesktopAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
+ 2 2+n request length
+ 4 BITMASK valueMask
+ 4n LISTofVALUES valueList
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXGetInputCount
+ 1 CARD8 opcode (X assigned)
+ 1 4 DMX opcode (X_DMXGetInputCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 inputCount
+ 20 unused
+
+ DMXGetInputAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 5 DMX opcode (X_DMXGetInputAttributes)
+ 2 2 request length
+ 4 CARD32 deviceId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 4 CARD32 inputType
+ 4 CARD32 physicalScreen
+ 4 CARD32 physicalId
+ 4 n nameLength
+ 1 BOOL isCore
+ 1 BOOL sendsCore
+ 1 BOOL detached
+ 5 unused
+ n name
+ p pad(n)
+
+ DMXAddInput
+ 1 CARD8 opcode (X assigned)
+ 1 16 DMX opcode (X_DMXAddInput)
+ 2 3+m+(n+p)/4 request length
+ 4 n displayNameLength
+ 4 CARD32 valueMask
+ 4m LISTofVALUES valueList
+ n displayName
+ p pad(n)
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 physicalId
+ 16 unused
+
+ DMXRemoveInput
+ 1 CARD8 opcode (X assigned)
+ 1 17 DMX opcode (X_DMXRemoveInput)
+ 2 3 request length
+ 4 CARD32 physicalId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+
+8. Changes to existing requests/replies/events
+
+ No changes to existing requests, replies, or events are necessitated
+ by this extension.
+
+
+
+9. Acknowledgments
+
+
+
+10. References
+
+ [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
+ Standard, X Version 11, Release 6.4. Available from
+ xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/xorg-server/hw/dmx/doxygen/.gitignore b/xorg-server/hw/dmx/doxygen/.gitignore
new file mode 100644
index 000000000..550262f01
--- /dev/null
+++ b/xorg-server/hw/dmx/doxygen/.gitignore
@@ -0,0 +1,2 @@
+html/
+doxygen.conf
diff --git a/xorg-server/hw/dmx/examples/.gitignore b/xorg-server/hw/dmx/examples/.gitignore
new file mode 100644
index 000000000..854534d9f
--- /dev/null
+++ b/xorg-server/hw/dmx/examples/.gitignore
@@ -0,0 +1,17 @@
+# Add & Override for this directory and it's subdirectories
+dmxaddinput
+dmxaddscreen
+dmxinfo
+dmxreconfig
+dmxresize
+dmxrminput
+dmxrmscreen
+dmxwininfo
+ev
+evi
+res
+xbell
+xinput
+xled
+xtest
+
diff --git a/xorg-server/hw/dmx/input/Makefile.am b/xorg-server/hw/dmx/input/Makefile.am
index 185aaf84e..ebe9a0843 100644
--- a/xorg-server/hw/dmx/input/Makefile.am
+++ b/xorg-server/hw/dmx/input/Makefile.am
@@ -1,67 +1,67 @@
-noinst_LIBRARIES = libdmxinput.a
-
-if DMX_BUILD_LNX
-RAWSRCS = lnx-keyboard.c \
- lnx-keyboard.h \
- lnx-ms.c \
- lnx-ms.h \
- lnx-ps2.c \
- lnx-ps2.h
-endif
-
-if DMX_BUILD_USB
-USBSRCS = usb-keyboard.c \
- usb-keyboard.h \
- usb-mouse.c \
- usb-mouse.h \
- usb-other.c \
- usb-other.h \
- usb-common.c \
- usb-common.h \
- usb-private.h
-endif
-
-DRVSRCS = dmxdummy.c \
- dmxdummy.h \
- dmxbackend.c \
- dmxbackend.h \
- dmxconsole.c \
- dmxconsole.h \
- dmxcommon.c \
- dmxcommon.h
-
-DMXSRCS = dmxinputinit.c \
- dmxinputinit.h \
- dmxarg.c \
- dmxarg.h \
- dmxsigio.c \
- dmxsigio.h \
- dmxevents.c \
- dmxevents.h \
- dmxxinput.c \
- dmxmotion.c \
- dmxmotion.h \
- dmxmap.c \
- dmxmap.h
-
-
-libdmxinput_a_SOURCES = ChkNotMaskEv.c \
- ChkNotMaskEv.h \
- atKeynames.h \
- $(RAWSRCS) \
- $(USBSRCS) \
- $(DRVSRCS) \
- $(DMXSRCS) \
- $(LIBSRCS)
-
-if GLX
-GLX_DEFS = @GL_CFLAGS@
-endif
-
-AM_CFLAGS = $(DIX_CFLAGS) \
- -I$(top_srcdir)/hw/dmx \
- -DHAVE_DMX_CONFIG_H \
- $(GLX_DEFS) \
- @DMXMODULES_CFLAGS@
-
-EXTRA_DIST = dmxdetach.c
+noinst_LIBRARIES = libdmxinput.a
+
+if DMX_BUILD_LNX
+RAWSRCS = lnx-keyboard.c \
+ lnx-keyboard.h \
+ lnx-ms.c \
+ lnx-ms.h \
+ lnx-ps2.c \
+ lnx-ps2.h
+endif
+
+if DMX_BUILD_USB
+USBSRCS = usb-keyboard.c \
+ usb-keyboard.h \
+ usb-mouse.c \
+ usb-mouse.h \
+ usb-other.c \
+ usb-other.h \
+ usb-common.c \
+ usb-common.h \
+ usb-private.h
+endif
+
+DRVSRCS = dmxdummy.c \
+ dmxdummy.h \
+ dmxbackend.c \
+ dmxbackend.h \
+ dmxconsole.c \
+ dmxconsole.h \
+ dmxcommon.c \
+ dmxcommon.h
+
+DMXSRCS = dmxinputinit.c \
+ dmxinputinit.h \
+ dmxarg.c \
+ dmxarg.h \
+ dmxsigio.c \
+ dmxsigio.h \
+ dmxevents.c \
+ dmxevents.h \
+ dmxxinput.c \
+ dmxmotion.c \
+ dmxmotion.h \
+ dmxmap.c \
+ dmxmap.h
+
+
+libdmxinput_a_SOURCES = ChkNotMaskEv.c \
+ ChkNotMaskEv.h \
+ atKeynames.h \
+ $(RAWSRCS) \
+ $(USBSRCS) \
+ $(DRVSRCS) \
+ $(DMXSRCS) \
+ $(LIBSRCS)
+
+if GLX
+GLX_DEFS = @GL_CFLAGS@
+endif
+
+AM_CFLAGS = $(DIX_CFLAGS) \
+ -I$(top_srcdir)/hw/dmx \
+ -DHAVE_DMX_CONFIG_H \
+ $(GLX_DEFS) \
+ @DMXMODULES_CFLAGS@
+
+EXTRA_DIST = dmxdetach.c
diff --git a/xorg-server/hw/dmx/input/dmxconsole.c b/xorg-server/hw/dmx/input/dmxconsole.c
index f63772b17..600a70553 100644
--- a/xorg-server/hw/dmx/input/dmxconsole.c
+++ b/xorg-server/hw/dmx/input/dmxconsole.c
@@ -640,7 +640,7 @@ dmxCloseConsole(myPrivate * priv)
}
static Bool
-dmxCloseConsoleScreen(int idx, ScreenPtr pScreen)
+dmxCloseConsoleScreen(ScreenPtr pScreen)
{
myPrivate *priv, *last;
@@ -650,7 +650,7 @@ dmxCloseConsoleScreen(int idx, ScreenPtr pScreen)
dmxCloseConsole(last = priv);
DMX_UNWRAP(CloseScreen, last, pScreen);
- return pScreen->CloseScreen(idx, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static Cursor
diff --git a/xorg-server/hw/dmx/input/dmxdummy.h b/xorg-server/hw/dmx/input/dmxdummy.h
index e3a85be95..17318b4d9 100644
--- a/xorg-server/hw/dmx/input/dmxdummy.h
+++ b/xorg-server/hw/dmx/input/dmxdummy.h
@@ -1,43 +1,43 @@
-/*
- * Copyright 2002 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation on the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to dummy input device support. \see dmxdummy.c */
-
-#ifndef _DMXDUMMY_H_
-#define _DMXDUMMY_H_
-
-extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-
-#endif
+/*
+ * Copyright 2002 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+/** \file
+ * Interface to dummy input device support. \see dmxdummy.c */
+
+#ifndef _DMXDUMMY_H_
+#define _DMXDUMMY_H_
+
+extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
+extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
+
+#endif