diff options
author | Keith Packard <keithp@guitar.keithp.com> | 2006-12-21 23:50:39 -0800 |
---|---|---|
committer | Keith Packard <keithp@guitar.keithp.com> | 2006-12-21 23:50:39 -0800 |
commit | f42e3cea236fa0091ed398a818fc8e17b0e1b3df (patch) | |
tree | 469f625bad7ed064b5e5a712d2c3ce9b7aa39572 | |
parent | 91396f14307537557ecd6eacf778fa091dd410c6 (diff) |
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.
-rw-r--r-- | randr/randr.c | 4 | ||||
-rw-r--r-- | randr/randrstr.h | 1 | ||||
-rw-r--r-- | randr/rrscreen.c | 6 |
3 files changed, 10 insertions, 1 deletions
diff --git a/randr/randr.c b/randr/randr.c index 1470035ca..5fa9baf84 100644 --- a/randr/randr.c +++ b/randr/randr.c @@ -243,6 +243,10 @@ Bool RRScreenInit(ScreenPtr pScreen) pScrPriv->maxWidth = pScrPriv->minWidth = pScreen->width; 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 pScrPriv->rrScreenSetSize = NULL; pScrPriv->rrCrtcSet = NULL; diff --git a/randr/randrstr.h b/randr/randrstr.h index 88f7588ae..136a47e43 100644 --- a/randr/randrstr.h +++ b/randr/randrstr.h @@ -224,6 +224,7 @@ typedef struct _rrScrPriv { CARD16 minWidth, minHeight; CARD16 maxWidth, maxHeight; CARD16 width, height; /* last known screen size */ + CARD16 mmWidth, mmHeight; /* last known screen size */ int numOutputs; RROutputPtr *outputs; diff --git a/randr/rrscreen.c b/randr/rrscreen.c index 51957bf87..8ee126af9 100644 --- a/randr/rrscreen.c +++ b/randr/rrscreen.c @@ -158,11 +158,15 @@ RRScreenSizeNotify (ScreenPtr pScreen) * pixel size */ if (pScrPriv->width == pScreen->width && - pScrPriv->height == pScreen->height) + pScrPriv->height == pScreen->height && + pScrPriv->mmWidth == pScreen->mmWidth && + pScrPriv->mmHeight == pScreen->mmHeight) return; pScrPriv->width = pScreen->width; pScrPriv->height = pScreen->height; + pScrPriv->mmWidth = pScreen->mmWidth; + pScrPriv->mmHeight = pScreen->mmHeight; pScrPriv->changed = TRUE; /* pScrPriv->sizeChanged = TRUE; */ |