[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#421279: marked as done (x2x: error messages to stderr if 'to' display doesn't support DPMS [PATCH])



Your message dated Mon, 14 Jan 2013 23:33:02 +0000
with message-id <E1TutWY-0004hW-Al@franck.debian.org>
and subject line Bug#421279: fixed in x2x 1.30-1
has caused the Debian Bug report #421279,
regarding x2x: error messages to stderr if 'to' display doesn't support DPMS [PATCH]
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
421279: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=421279
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: x2x
Version: 1.27.svn.20060501-1

If you start x2x where the 'to' display doesn't support DPMS, x2x will
print a warning message to standard error every time the mouse is moved
across to the 'to' display:

zircon$ x2x -to blackrock:0.0 -resurface -west
Xlib:  extension "DPMS" missing on display "blackrock:0.0".
Xlib:  extension "DPMS" missing on display "blackrock:0.0".

(In this case the target display is a Tektronix X terminal which was
manufactured before the DPMS extension was designed...)

It shouldn't be printing this at all, since if the target display does
not support the extension x2x can simply fall back to its traditional
behaviour of doing nothing (on the assumption that the display doesn't
support blanking and unblanking).

Here's a patch to x2x.c which fixes this -- the first time we try to
do any DPMS action we use DPMSQueryExtension() to see if the display
supports it; if it doesn't we don't do anything.

This works for me. I've tried to put in code so that compiling it for
Cygwin still works, but I haven't tested that at all. I also haven't
checked that it still does the right thing if the target display is
DPMS capable, but I can't see how it could possibly be broken :-)

Hope this helps.

===begin patch===
--- x2x-1.27.svn.20060501/x2x.c	2006-04-30 16:13:50.000000000 +0100
+++ x2x-1.27.svn.20060501-patched/x2x.c	2007-04-27 15:41:21.935158688 +0100
@@ -103,6 +103,8 @@
 
 #define DPMSModeOn        0
 extern Status DPMSForceLevel(Display *, unsigned short);
+/* We always support this: */
+#define DPMSQueryExtension(DPY, EVBASE, ERBASE) TRUE
 #else
 #include <X11/extensions/dpms.h>
 #endif
@@ -139,6 +141,7 @@
 #ifndef WIN_2_X
 static int     ErrorHandler();
 #endif
+static void    DoDPMSForceLevel();
 static void    DoX2X();
 static void    InitDpyInfo();
 static void    DoConnect();
@@ -292,6 +295,7 @@
   struct _shadow *pNext;
   char    *name;
   Display *dpy;
+  int     DPMSstatus; /* -1: not queried, 0: not supported, 1: supported */
 } SHADOW, *PSHADOW;
 
 /* sticky keys */
@@ -453,6 +457,7 @@
 
   /* toDpy is always the first shadow */
   pShadow = (PSHADOW)malloc(sizeof(SHADOW));
+  pShadow->DPMSstatus = -1;
   pShadow->name = toDpyName;
   /* link into the global list */
   pShadow->pNext = shadows;
@@ -691,6 +696,7 @@
     } else if (!strcasecmp(argv[arg], "-shadow")) {
       if (++arg >= argc) Usage();
       pShadow = (PSHADOW)malloc(sizeof(SHADOW));
+      pShadow->DPMSstatus = -1;
       pShadow->name = argv[arg];
 
       /* into the global list of shadows */
@@ -1386,6 +1392,27 @@
 
 } /* END InitDpyInfo */
 
+static void DoDPMSForceLevel(pShadow, level)
+PSHADOW pShadow;
+CARD16 level;
+{
+  /* Do a DPMSForceLevel(), but only if the display supports it */
+  if (pShadow->DPMSstatus == -1) {
+    /* Need to see if this display supports the DPMS extension.
+     * If it doesn't then trying DPMSForceLevel() will display
+     * a spurious error message to stderr.
+     */
+    int t1, t2;
+    if (DPMSQueryExtension(pShadow->dpy, &t1, &t2))
+      pShadow->DPMSstatus = 1;
+    else
+      pShadow->DPMSstatus = 0;
+  }
+  
+  if (pShadow->DPMSstatus != 0)
+    DPMSForceLevel(pShadow->dpy, level);
+}
+
 static void DoConnect(pDpyInfo)
 PDPYINFO pDpyInfo;
 {
@@ -1395,7 +1422,7 @@
   PSHADOW   pShadow;
 
   for (pShadow = shadows; pShadow; pShadow = pShadow->pNext) {
-    DPMSForceLevel(pShadow->dpy, DPMSModeOn);
+    DoDPMSForceLevel(pShadow, DPMSModeOn);
     XFlush(pShadow->dpy);
   }
 
@@ -1616,7 +1643,7 @@
   for (pShadow = shadows; pShadow; pShadow = pShadow->pNext) {
     if (doDpmsMouse)
     {
-      DPMSForceLevel(pShadow->dpy, DPMSModeOn);
+      DoDPMSForceLevel(pShadow, DPMSModeOn);
     }
       
     XTestFakeMotionEvent(pShadow->dpy, toScreenNum,
@@ -2324,7 +2351,7 @@
   PSHADOW   pShadow;
 
   for (pShadow = shadows; pShadow; pShadow = pShadow->pNext) {
-    DPMSForceLevel(pShadow->dpy, DPMSModeOn);
+    DoDPMSForceLevel(pShadow, DPMSModeOn);
     XFlush(pShadow->dpy);
   }
 
@@ -2852,7 +2879,7 @@
     for (pShadow = shadows; pShadow; pShadow = pShadow->pNext) {
       if (doDpmsMouse)
       {
-        DPMSForceLevel(pShadow->dpy, DPMSModeOn);
+        DoDPMSForceLevel(pShadow, DPMSModeOn);
       }
       XTestFakeMotionEvent(pShadow->dpy, toScreenNum, pDpyInfo->xTables[toScreenNum][x],
         pDpyInfo->yTables[toScreenNum][y], 0);
===endit===

-- PMM


--- End Message ---
--- Begin Message ---
Source: x2x
Source-Version: 1.30-1

We believe that the bug you reported is fixed in the latest version of
x2x, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 421279@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Barak A. Pearlmutter <bap@debian.org> (supplier of updated x2x package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Sat, 29 Dec 2012 08:30:20 +0100
Source: x2x
Binary: x2x
Architecture: source amd64
Version: 1.30-1
Distribution: unstable
Urgency: low
Maintainer: Barak A. Pearlmutter <bap@debian.org>
Changed-By: Barak A. Pearlmutter <bap@debian.org>
Description: 
 x2x        - Link two X displays together, simulating a multiheaded display
Closes: 421279 435702 438943 500147 695167
Changes: 
 x2x (1.30-1) unstable; urgency=low
 .
   * Adopt package (closes: #435702)
   * New upstream release (closes: #438943)
     - Contains dpms patch (closes: #421279)
   * Update packaging:
     - remove mention of propsel from description (closes: #500147, #695167)
     - new upstream home page and repository
     - upstream has autoconf/automake, switch to use it
     - dh9, harden
     - bump standards version
Checksums-Sha1: 
 792cb54e8c20bf48d854e15bc1d83ef23335babd 1187 x2x_1.30-1.dsc
 6620019019265c4bfe0575af1cb445ae2979b440 44838 x2x_1.30.orig.tar.gz
 f64b94d3a02062b7edbff7e8946f9a87465d3d5d 4818 x2x_1.30-1.debian.tar.gz
 2386053150edd94a77323ac5b54c1fb67cf15e36 31268 x2x_1.30-1_amd64.deb
Checksums-Sha256: 
 346bd851e137b25ffeb4c7e56257567f6836187f0cc0e673944bc56d5ed28ff8 1187 x2x_1.30-1.dsc
 21758dfe5835982ab243720654a265cd4462e937bcd72f690c740dad7c06d6d3 44838 x2x_1.30.orig.tar.gz
 31ba23242545f18e4d0b5742c1f013ee53c468424fd103da9545d74a3fc8c60b 4818 x2x_1.30-1.debian.tar.gz
 b7d03ca5a12fccc1264c5d4b8288b315dd280a53eca44af0221b37f6c3dc836c 31268 x2x_1.30-1_amd64.deb
Files: 
 b926c16ef9a708ea3f04d38e2e7e7078 1187 x11 optional x2x_1.30-1.dsc
 d19d2254de8bdfc25fe94ce62babb878 44838 x11 optional x2x_1.30.orig.tar.gz
 2e0c9f43e9958793da1803498af7c7ba 4818 x11 optional x2x_1.30-1.debian.tar.gz
 94bd12325c3b575288ceb09227f74ce4 31268 x11 optional x2x_1.30-1_amd64.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlD0krEACgkQLz4Gnv7CP7KH+wCfYtFKlHhOU/Ev0kOy3DxWZVZE
kvAAoMHfWdueVtEWBy4w9t/WB8g4ooSh
=2MpW
-----END PGP SIGNATURE-----

--- End Message ---

Reply to: