xorg driver, randr working now
This commit is contained in:
parent
2ad9b26c21
commit
961105ba95
@ -97,12 +97,15 @@ rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height,
|
|||||||
{
|
{
|
||||||
WindowPtr root;
|
WindowPtr root;
|
||||||
PixmapPtr screenPixmap;
|
PixmapPtr screenPixmap;
|
||||||
|
PixmapPtr rootWindowPixmap;
|
||||||
BoxRec box;
|
BoxRec box;
|
||||||
ScrnInfoPtr pScrn;
|
ScrnInfoPtr pScrn;
|
||||||
rdpPtr dev;
|
rdpPtr dev;
|
||||||
|
char *oldpfbMemory;
|
||||||
|
|
||||||
LLOGLN(0, ("rdpRRScreenSetSize: width %d height %d mmWidth %d mmHeight %d",
|
LLOGLN(0, ("rdpRRScreenSetSize: width %d height %d mmWidth %d mmHeight %d",
|
||||||
width, height, (int)mmWidth, (int)mmHeight));
|
width, height, (int)mmWidth, (int)mmHeight));
|
||||||
|
|
||||||
pScrn = xf86Screens[pScreen->myNum];
|
pScrn = xf86Screens[pScreen->myNum];
|
||||||
dev = XRDPPTR(pScrn);
|
dev = XRDPPTR(pScrn);
|
||||||
root = rdpGetRootWindowPtr(pScreen);
|
root = rdpGetRootWindowPtr(pScreen);
|
||||||
@ -123,23 +126,29 @@ rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height,
|
|||||||
pScreen->mmHeight = mmHeight;
|
pScreen->mmHeight = mmHeight;
|
||||||
|
|
||||||
screenPixmap = pScreen->GetScreenPixmap(pScreen);
|
screenPixmap = pScreen->GetScreenPixmap(pScreen);
|
||||||
|
rootWindowPixmap = pScreen->GetWindowPixmap(root);
|
||||||
|
|
||||||
|
oldpfbMemory = dev->pfbMemory;
|
||||||
|
dev->pfbMemory = (char *) malloc(dev->sizeInBytes);
|
||||||
|
|
||||||
if (screenPixmap != 0)
|
if (screenPixmap != 0)
|
||||||
{
|
{
|
||||||
LLOGLN(0, (" resizing screenPixmap [%p] to %dx%d, "
|
|
||||||
"currently at %dx%d", (void *)screenPixmap, width, height,
|
|
||||||
screenPixmap->drawable.width, screenPixmap->drawable.height));
|
|
||||||
free(dev->pfbMemory);
|
|
||||||
dev->pfbMemory = (char *) malloc(dev->sizeInBytes);
|
|
||||||
pScreen->ModifyPixmapHeader(screenPixmap, width, height,
|
pScreen->ModifyPixmapHeader(screenPixmap, width, height,
|
||||||
dev->depth, dev->bitsPerPixel,
|
-1, -1,
|
||||||
dev->paddedWidthInBytes,
|
dev->paddedWidthInBytes,
|
||||||
dev->pfbMemory);
|
dev->pfbMemory);
|
||||||
LLOGLN(0, (" pixmap resized to %dx%d",
|
|
||||||
screenPixmap->drawable.width, screenPixmap->drawable.height));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LLOGLN(10, (" root window %p", (void *)root));
|
if (rootWindowPixmap != 0)
|
||||||
|
{
|
||||||
|
pScreen->ModifyPixmapHeader(rootWindowPixmap, width, height,
|
||||||
|
-1, -1,
|
||||||
|
dev->paddedWidthInBytes,
|
||||||
|
dev->pfbMemory);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(oldpfbMemory);
|
||||||
|
|
||||||
box.x1 = 0;
|
box.x1 = 0;
|
||||||
box.y1 = 0;
|
box.y1 = 0;
|
||||||
box.x2 = width;
|
box.x2 = width;
|
||||||
@ -152,8 +161,11 @@ rdpRRScreenSetSize(ScreenPtr pScreen, CARD16 width, CARD16 height,
|
|||||||
root->drawable.height = height;
|
root->drawable.height = height;
|
||||||
ResizeChildrenWinSize(root, 0, 0, 0, 0);
|
ResizeChildrenWinSize(root, 0, 0, 0, 0);
|
||||||
RRGetInfo(pScreen, 1);
|
RRGetInfo(pScreen, 1);
|
||||||
//rdpInvalidateArea(g_pScreen, 0, 0, dev->width, dev->height);
|
|
||||||
LLOGLN(0, (" screen resized to %dx%d", pScreen->width, pScreen->height));
|
LLOGLN(0, (" screen resized to %dx%d", pScreen->width, pScreen->height));
|
||||||
|
|
||||||
|
xf86EnableDisableFBAccess(pScreen->myNum, 0);
|
||||||
|
xf86EnableDisableFBAccess(pScreen->myNum, 1);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user