浏览代码

vncRandRGetOutputName: return a copy of the string

Compatibility with libXrandr, where the name is in dynamically
allocated XRROutputInfo.
tags/v1.8.90
Peter Åstrand (astrand) 6 年前
父节点
当前提交
758b83ba53
共有 3 个文件被更改,包括 14 次插入7 次删除
  1. 4
    3
      unix/xserver/hw/vnc/XorgGlue.c
  2. 1
    1
      unix/xserver/hw/vnc/XorgGlue.h
  3. 9
    3
      unix/xserver/hw/vnc/XserverDesktop.cc

+ 4
- 3
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
}


+ 1
- 1
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);

+ 9
- 3
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;
}
}

正在加载...
取消
保存