diff options
author | Peter Åstrand (astrand) <astrand@cendio.se> | 2018-03-07 08:35:03 +0100 |
---|---|---|
committer | Peter Åstrand (astrand) <astrand@cendio.se> | 2018-04-09 10:04:12 +0200 |
commit | 758b83ba53372cf81cae4131f1f50a0b8fc670ca (patch) | |
tree | eacb567952ce4be2b40dd677adafb691133147f5 /unix/xserver/hw/vnc | |
parent | e3aece4bac1b8c7cc2aadd824dbba4231665479f (diff) | |
download | tigervnc-758b83ba53372cf81cae4131f1f50a0b8fc670ca.tar.gz tigervnc-758b83ba53372cf81cae4131f1f50a0b8fc670ca.zip |
vncRandRGetOutputName: return a copy of the string
Compatibility with libXrandr, where the name is in dynamically
allocated XRROutputInfo.
Diffstat (limited to 'unix/xserver/hw/vnc')
-rw-r--r-- | unix/xserver/hw/vnc/XorgGlue.c | 7 | ||||
-rw-r--r-- | unix/xserver/hw/vnc/XorgGlue.h | 2 | ||||
-rw-r--r-- | unix/xserver/hw/vnc/XserverDesktop.cc | 12 |
3 files changed, 14 insertions, 7 deletions
diff --git a/unix/xserver/hw/vnc/XorgGlue.c b/unix/xserver/hw/vnc/XorgGlue.c index baeac29d..3a2fce9f 100644 --- a/unix/xserver/hw/vnc/XorgGlue.c +++ b/unix/xserver/hw/vnc/XorgGlue.c @@ -22,6 +22,7 @@ #endif #include <assert.h> +#include <string.h> #include "scrnintstr.h" #ifdef RANDR @@ -226,13 +227,13 @@ int vncRandRGetAvailableOutputs(int scrIdx) #endif } -const char *vncRandRGetOutputName(int scrIdx, int outputIdx) +char *vncRandRGetOutputName(int scrIdx, int outputIdx) { #ifdef RANDR rrScrPrivPtr rp = rrGetScrPriv(screenInfo.screens[scrIdx]); - return rp->outputs[outputIdx]->name; + return strdup(rp->outputs[outputIdx]->name); #else - return ""; + return strdup(""); #endif } diff --git a/unix/xserver/hw/vnc/XorgGlue.h b/unix/xserver/hw/vnc/XorgGlue.h index dc78f5eb..9bdb25e7 100644 --- a/unix/xserver/hw/vnc/XorgGlue.h +++ b/unix/xserver/hw/vnc/XorgGlue.h @@ -56,7 +56,7 @@ int vncRandRHasOutputClones(int scrIdx); int vncRandRGetOutputCount(int scrIdx); int vncRandRGetAvailableOutputs(int scrIdx); -const char *vncRandRGetOutputName(int scrIdx, int outputIdx); +char *vncRandRGetOutputName(int scrIdx, int outputIdx); int vncRandRIsOutputEnabled(int scrIdx, int outputIdx); int vncRandRIsOutputUsable(int scrIdx, int outputIdx); diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc index c47f507a..c9b70389 100644 --- a/unix/xserver/hw/vnc/XserverDesktop.cc +++ b/unix/xserver/hw/vnc/XserverDesktop.cc @@ -675,8 +675,10 @@ unsigned int XserverDesktop::setScreenLayout(int fb_width, int fb_height, /* Disable and move on... */ ret = vncRandRDisableOutput(screenIndex, i); if (!ret) { + char *name = vncRandRGetOutputName(screenIndex, i); vlog.error("Failed to disable unused output '%s'", - vncRandRGetOutputName(screenIndex, i)); + name); + free(name); return rfb::resultInvalid; } outputIdMap.erase(output); @@ -690,10 +692,12 @@ unsigned int XserverDesktop::setScreenLayout(int fb_width, int fb_height, iter->dimensions.width(), iter->dimensions.height()); if (!ret) { + char *name = vncRandRGetOutputName(screenIndex, i); vlog.error("Failed to reconfigure output '%s' to %dx%d+%d+%d", - vncRandRGetOutputName(screenIndex, i), + name, iter->dimensions.width(), iter->dimensions.height(), iter->dimensions.tl.x, iter->dimensions.tl.y); + free(name); return rfb::resultInvalid; } } @@ -747,10 +751,12 @@ unsigned int XserverDesktop::setScreenLayout(int fb_width, int fb_height, iter->dimensions.width(), iter->dimensions.height()); if (!ret) { + char *name = vncRandRGetOutputName(screenIndex, i); vlog.error("Failed to reconfigure output '%s' to %dx%d+%d+%d", - vncRandRGetOutputName(screenIndex, i), + name, iter->dimensions.width(), iter->dimensions.height(), iter->dimensions.tl.x, iter->dimensions.tl.y); + free(name); return rfb::resultInvalid; } } |