Track physical screen size and send out updates when that changes.
Events and internal data structures need to be updated whenever the physical or pixel size of the screen changes. The code was ignoring the physical size, so changing only that would not be registered anywhere. (cherry picked from f42e3cea236fa0091ed398a818fc8e17b0e1b3df commit)
This commit is contained in:
parent
e79602fca2
commit
953a9ef949
|
@ -243,6 +243,10 @@ Bool RRScreenInit(ScreenPtr pScreen)
|
||||||
pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width;
|
pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width;
|
||||||
pScrPriv->maxHeight = pScrPriv->minHeight = pScreen->height;
|
pScrPriv->maxHeight = pScrPriv->minHeight = pScreen->height;
|
||||||
|
|
||||||
|
pScrPriv->width = pScreen->width;
|
||||||
|
pScrPriv->height = pScreen->height;
|
||||||
|
pScrPriv->mmWidth = pScreen->mmWidth;
|
||||||
|
pScrPriv->mmHeight = pScreen->mmHeight;
|
||||||
#if RANDR_12_INTERFACE
|
#if RANDR_12_INTERFACE
|
||||||
pScrPriv->rrScreenSetSize = NULL;
|
pScrPriv->rrScreenSetSize = NULL;
|
||||||
pScrPriv->rrCrtcSet = NULL;
|
pScrPriv->rrCrtcSet = NULL;
|
||||||
|
|
|
@ -224,6 +224,7 @@ typedef struct _rrScrPriv {
|
||||||
CARD16 minWidth, minHeight;
|
CARD16 minWidth, minHeight;
|
||||||
CARD16 maxWidth, maxHeight;
|
CARD16 maxWidth, maxHeight;
|
||||||
CARD16 width, height; /* last known screen size */
|
CARD16 width, height; /* last known screen size */
|
||||||
|
CARD16 mmWidth, mmHeight; /* last known screen size */
|
||||||
|
|
||||||
int numOutputs;
|
int numOutputs;
|
||||||
RROutputPtr *outputs;
|
RROutputPtr *outputs;
|
||||||
|
|
|
@ -158,11 +158,15 @@ RRScreenSizeNotify (ScreenPtr pScreen)
|
||||||
* pixel size
|
* pixel size
|
||||||
*/
|
*/
|
||||||
if (pScrPriv->width == pScreen->width &&
|
if (pScrPriv->width == pScreen->width &&
|
||||||
pScrPriv->height == pScreen->height)
|
pScrPriv->height == pScreen->height &&
|
||||||
|
pScrPriv->mmWidth == pScreen->mmWidth &&
|
||||||
|
pScrPriv->mmHeight == pScreen->mmHeight)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pScrPriv->width = pScreen->width;
|
pScrPriv->width = pScreen->width;
|
||||||
pScrPriv->height = pScreen->height;
|
pScrPriv->height = pScreen->height;
|
||||||
|
pScrPriv->mmWidth = pScreen->mmWidth;
|
||||||
|
pScrPriv->mmHeight = pScreen->mmHeight;
|
||||||
pScrPriv->changed = TRUE;
|
pScrPriv->changed = TRUE;
|
||||||
/* pScrPriv->sizeChanged = TRUE; */
|
/* pScrPriv->sizeChanged = TRUE; */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue