randr: deliver Output and Crtc events of attached output providers.
Consider all attached output providers when looking for changed outputs and crtcs. Reviewed-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Michal Srb <msrb@suse.com> Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
a9ca93dcf9
commit
85ae44f07f
|
@ -478,6 +478,16 @@ TellChanged(WindowPtr pWin, pointer value)
|
||||||
if (crtc->changed)
|
if (crtc->changed)
|
||||||
RRDeliverCrtcEvent(client, pWin, crtc);
|
RRDeliverCrtcEvent(client, pWin, crtc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
|
||||||
|
pSlaveScrPriv = rrGetScrPriv(iter);
|
||||||
|
for (i = 0; i < pSlaveScrPriv->numCrtcs; i++) {
|
||||||
|
RRCrtcPtr crtc = pSlaveScrPriv->crtcs[i];
|
||||||
|
|
||||||
|
if (crtc->changed)
|
||||||
|
RRDeliverCrtcEvent(client, pWin, crtc);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pRREvent->mask & RROutputChangeNotifyMask) {
|
if (pRREvent->mask & RROutputChangeNotifyMask) {
|
||||||
|
@ -487,6 +497,16 @@ TellChanged(WindowPtr pWin, pointer value)
|
||||||
if (output->changed)
|
if (output->changed)
|
||||||
RRDeliverOutputEvent(client, pWin, output);
|
RRDeliverOutputEvent(client, pWin, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
|
||||||
|
pSlaveScrPriv = rrGetScrPriv(iter);
|
||||||
|
for (i = 0; i < pSlaveScrPriv->numOutputs; i++) {
|
||||||
|
RROutputPtr output = pSlaveScrPriv->outputs[i];
|
||||||
|
|
||||||
|
if (output->changed)
|
||||||
|
RRDeliverOutputEvent(client, pWin, output);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pRREvent->mask & RRProviderChangeNotifyMask) {
|
if (pRREvent->mask & RRProviderChangeNotifyMask) {
|
||||||
|
@ -581,6 +601,10 @@ RRTellChanged(ScreenPtr pScreen)
|
||||||
xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
|
xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
|
||||||
pSlaveScrPriv = rrGetScrPriv(iter);
|
pSlaveScrPriv = rrGetScrPriv(iter);
|
||||||
pSlaveScrPriv->provider->changed = FALSE;
|
pSlaveScrPriv->provider->changed = FALSE;
|
||||||
|
for (i = 0; i < pSlaveScrPriv->numOutputs; i++)
|
||||||
|
pSlaveScrPriv->outputs[i]->changed = FALSE;
|
||||||
|
for (i = 0; i < pSlaveScrPriv->numCrtcs; i++)
|
||||||
|
pSlaveScrPriv->crtcs[i]->changed = FALSE;
|
||||||
}
|
}
|
||||||
xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
|
xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
|
||||||
pSlaveScrPriv = rrGetScrPriv(iter);
|
pSlaveScrPriv = rrGetScrPriv(iter);
|
||||||
|
|
Loading…
Reference in New Issue