summaryrefslogtreecommitdiffstats
path: root/xorg/server/xrdpdev/xrdpdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg/server/xrdpdev/xrdpdev.c')
-rw-r--r--xorg/server/xrdpdev/xrdpdev.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/xorg/server/xrdpdev/xrdpdev.c b/xorg/server/xrdpdev/xrdpdev.c
index e68b6cb5..4fad95b6 100644
--- a/xorg/server/xrdpdev/xrdpdev.c
+++ b/xorg/server/xrdpdev/xrdpdev.c
@@ -36,12 +36,14 @@ This is the main driver file
#include <fb.h>
#include <micmap.h>
#include <mi.h>
+#include <randrstr.h>
#include "rdp.h"
#include "rdpPri.h"
#include "rdpDraw.h"
#include "rdpGC.h"
#include "rdpCursor.h"
+#include "rdpRandR.h"
#define XRDP_DRIVER_NAME "XRDPDEV"
#define XRDP_NAME "XRDPDEV"
@@ -74,6 +76,7 @@ int g_blueOffset = 0;
int g_blueBits = 8;
static int g_setup_done = 0;
+static OsTimerPtr g_timer = 0;
/* Supported "chipsets" */
static SymTabRec g_Chipsets[] =
@@ -276,6 +279,55 @@ rdpSaveScreen(ScreenPtr pScreen, int on)
return 1;
}
+/******************************************************************************/
+static CARD32
+rdpDeferredRandR(OsTimerPtr timer, CARD32 now, pointer arg)
+{
+ ScreenPtr pScreen;
+ rrScrPrivPtr pRRScrPriv;
+ ScrnInfoPtr pScrn;
+ rdpPtr dev;
+
+ pScreen = (ScreenPtr) arg;
+ pScrn = xf86Screens[pScreen->myNum];
+ dev = XRDPPTR(pScrn);
+ LLOGLN(10, ("rdpDeferredRandR:"));
+ pRRScrPriv = rrGetScrPriv(pScreen);
+ if (pRRScrPriv == 0)
+ {
+ LLOGLN(0, ("rdpDeferredRandR: rrGetScrPriv failed"));
+ return 1;
+ }
+
+ dev->rrSetConfig = pRRScrPriv->rrSetConfig;
+ dev->rrGetInfo = pRRScrPriv->rrGetInfo;
+ dev->rrScreenSetSize = pRRScrPriv->rrScreenSetSize;
+ dev->rrCrtcSet = pRRScrPriv->rrCrtcSet;
+ dev->rrCrtcSetGamma = pRRScrPriv->rrCrtcSetGamma;
+ dev->rrCrtcGetGamma = pRRScrPriv->rrCrtcGetGamma;
+ dev->rrOutputSetProperty = pRRScrPriv->rrOutputSetProperty;
+ dev->rrOutputValidateMode = pRRScrPriv->rrOutputValidateMode;
+ dev->rrModeDestroy = pRRScrPriv->rrModeDestroy;
+ dev->rrOutputGetProperty = pRRScrPriv->rrOutputGetProperty;
+ dev->rrGetPanning = pRRScrPriv->rrGetPanning;
+ dev->rrSetPanning = pRRScrPriv->rrSetPanning;
+
+ pRRScrPriv->rrSetConfig = rdpRRSetConfig;
+ pRRScrPriv->rrGetInfo = rdpRRGetInfo;
+ pRRScrPriv->rrScreenSetSize = rdpRRScreenSetSize;
+ pRRScrPriv->rrCrtcSet = rdpRRCrtcSet;
+ pRRScrPriv->rrCrtcSetGamma = rdpRRCrtcSetGamma;
+ pRRScrPriv->rrCrtcGetGamma = rdpRRCrtcGetGamma;
+ pRRScrPriv->rrOutputSetProperty = rdpRROutputSetProperty;
+ pRRScrPriv->rrOutputValidateMode = rdpRROutputValidateMode;
+ pRRScrPriv->rrModeDestroy = rdpRRModeDestroy;
+ pRRScrPriv->rrOutputGetProperty = rdpRROutputGetProperty;
+ pRRScrPriv->rrGetPanning = rdpRRGetPanning;
+ pRRScrPriv->rrSetPanning = rdpRRSetPanning;
+
+ return 0;
+}
+
/*****************************************************************************/
static Bool
rdpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
@@ -382,6 +434,8 @@ rdpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
dev->ModifyPixmapHeader = pScreen->ModifyPixmapHeader;
pScreen->ModifyPixmapHeader = rdpModifyPixmapHeader;
+ g_timer = TimerSet(g_timer, 0, 10, rdpDeferredRandR, pScreen);
+
LLOGLN(0, ("rdpScreenInit: out"));
return 1;
}