Lines Matching +full:0 +full:- +full:mon
31 if (crtc->numOutputs) { in RRMonitorCrtcName()
32 RROutputPtr output = crtc->outputs[0]; in RRMonitorCrtcName()
33 return MakeAtom(output->name, output->nameLength, TRUE); in RRMonitorCrtcName()
35 sprintf(name, "Monitor-%08lx", (unsigned long int)crtc->id); in RRMonitorCrtcName()
42 ScreenPtr screen = crtc->pScreen; in RRMonitorCrtcPrimary()
46 for (o = 0; o < crtc->numOutputs; o++) in RRMonitorCrtcPrimary()
47 if (crtc->outputs[o] == pScrPriv->primaryOutput) in RRMonitorCrtcPrimary()
57 ScreenPtr screen = crtc->pScreen; in RRMonitorGetCrtcGeometry()
62 if (pScrPriv && pScrPriv->rrGetPanning && in RRMonitorGetCrtcGeometry()
63 pScrPriv->rrGetPanning(screen, crtc, &panned_area, NULL, NULL) && in RRMonitorGetCrtcGeometry()
66 geometry->box = panned_area; in RRMonitorGetCrtcGeometry()
72 geometry->box.x1 = crtc->x; in RRMonitorGetCrtcGeometry()
73 geometry->box.y1 = crtc->y; in RRMonitorGetCrtcGeometry()
74 geometry->box.x2 = geometry->box.x1 + width; in RRMonitorGetCrtcGeometry()
75 geometry->box.y2 = geometry->box.y1 + height; in RRMonitorGetCrtcGeometry()
77 if (crtc->numOutputs && crtc->outputs[0]->mmWidth && crtc->outputs[0]->mmHeight) { in RRMonitorGetCrtcGeometry()
78 RROutputPtr output = crtc->outputs[0]; in RRMonitorGetCrtcGeometry()
79 geometry->mmWidth = output->mmWidth; in RRMonitorGetCrtcGeometry()
80 geometry->mmHeight = output->mmHeight; in RRMonitorGetCrtcGeometry()
82 … geometry->mmWidth = floor ((geometry->box.x2 - geometry->box.x1) / DEFAULT_PIXELS_PER_MM + 0.5); in RRMonitorGetCrtcGeometry()
83 … geometry->mmHeight = floor ((geometry->box.y2 - geometry->box.y1) / DEFAULT_PIXELS_PER_MM + 0.5); in RRMonitorGetCrtcGeometry()
92 monitor->name = RRMonitorCrtcName(crtc); in RRMonitorSetFromServer()
93 monitor->pScreen = crtc->pScreen; in RRMonitorSetFromServer()
94 monitor->numOutputs = crtc->numOutputs; in RRMonitorSetFromServer()
95 monitor->outputs = calloc(crtc->numOutputs, sizeof(RROutput)); in RRMonitorSetFromServer()
96 if (!monitor->outputs) in RRMonitorSetFromServer()
98 for (o = 0; o < crtc->numOutputs; o++) in RRMonitorSetFromServer()
99 monitor->outputs[o] = crtc->outputs[o]->id; in RRMonitorSetFromServer()
100 monitor->primary = RRMonitorCrtcPrimary(crtc); in RRMonitorSetFromServer()
101 monitor->automatic = TRUE; in RRMonitorSetFromServer()
102 RRMonitorGetCrtcGeometry(crtc, &monitor->geometry); in RRMonitorSetFromServer()
109 return (monitor->geometry.box.x1 == 0 && in RRMonitorAutomaticGeometry()
110 monitor->geometry.box.y1 == 0 && in RRMonitorAutomaticGeometry()
111 monitor->geometry.box.x2 == 0 && in RRMonitorAutomaticGeometry()
112 monitor->geometry.box.y2 == 0); in RRMonitorAutomaticGeometry()
118 if (RRMonitorAutomaticGeometry(monitor) && monitor->numOutputs > 0) { in RRMonitorGetGeometry()
119 ScreenPtr screen = monitor->pScreen; in RRMonitorGetGeometry()
121 RRMonitorGeometryRec first = { .box = { 0, 0, 0, 0 }, .mmWidth = 0, .mmHeight = 0 }; in RRMonitorGetGeometry()
124 int active_crtcs = 0; in RRMonitorGetGeometry()
127 for (o = 0; o < monitor->numOutputs; o++) { in RRMonitorGetGeometry()
131 for (c = 0; !in_use && c < pScrPriv->numCrtcs; c++) { in RRMonitorGetGeometry()
132 crtc = pScrPriv->crtcs[c]; in RRMonitorGetGeometry()
133 if (!crtc->mode) in RRMonitorGetGeometry()
135 for (co = 0; !in_use && co < crtc->numOutputs; co++) in RRMonitorGetGeometry()
136 if (monitor->outputs[o] == crtc->outputs[co]->id) in RRMonitorGetGeometry()
145 if (active_crtcs == 0) { in RRMonitorGetGeometry()
149 geometry->box.x1 = min(this.box.x1, geometry->box.x1); in RRMonitorGetGeometry()
150 geometry->box.x2 = max(this.box.x2, geometry->box.x2); in RRMonitorGetGeometry()
151 geometry->box.y1 = min(this.box.y1, geometry->box.y1); in RRMonitorGetGeometry()
152 geometry->box.y2 = max(this.box.y2, geometry->box.y2); in RRMonitorGetGeometry()
159 … geometry->mmWidth = (this.box.x2 - this.box.x1) / (first.box.x2 - first.box.x1) * first.mmWidth; in RRMonitorGetGeometry()
160 … geometry->mmHeight = (this.box.y2 - this.box.y1) / (first.box.y2 - first.box.y1) * first.mmHeight; in RRMonitorGetGeometry()
163 *geometry = monitor->geometry; in RRMonitorGetGeometry()
170 monitor->name = client_monitor->name; in RRMonitorSetFromClient()
171 monitor->pScreen = client_monitor->pScreen; in RRMonitorSetFromClient()
172 monitor->numOutputs = client_monitor->numOutputs; in RRMonitorSetFromClient()
173 monitor->outputs = calloc(client_monitor->numOutputs, sizeof (RROutput)); in RRMonitorSetFromClient()
174 if (!monitor->outputs && client_monitor->numOutputs) in RRMonitorSetFromClient()
176 … memcpy(monitor->outputs, client_monitor->outputs, client_monitor->numOutputs * sizeof (RROutput)); in RRMonitorSetFromClient()
177 monitor->primary = client_monitor->primary; in RRMonitorSetFromClient()
178 monitor->automatic = client_monitor->automatic; in RRMonitorSetFromClient()
179 RRMonitorGetGeometry(client_monitor, &monitor->geometry); in RRMonitorSetFromClient()
204 numCrtcs = pScrPriv->numCrtcs; in RRMonitorInitList()
205 xorg_list_for_each_entry(slave, &screen->slave_list, slave_head) { in RRMonitorInitList()
208 if (!slave->is_output_slave) in RRMonitorInitList()
212 numCrtcs += pSlavePriv->numCrtcs; in RRMonitorInitList()
214 mon_list->num_crtcs = numCrtcs; in RRMonitorInitList()
216 mon_list->server_crtc = calloc(numCrtcs * 2, sizeof (RRCrtcPtr)); in RRMonitorInitList()
217 if (!mon_list->server_crtc) in RRMonitorInitList()
221 c = 0; in RRMonitorInitList()
222 for (sc = 0; sc < pScrPriv->numCrtcs; sc++, c++) { in RRMonitorInitList()
223 if (pScrPriv->crtcs[sc]->mode != NULL) in RRMonitorInitList()
224 mon_list->server_crtc[c] = pScrPriv->crtcs[sc]; in RRMonitorInitList()
227 xorg_list_for_each_entry(slave, &screen->slave_list, slave_head) { in RRMonitorInitList()
230 if (!slave->is_output_slave) in RRMonitorInitList()
234 for (sc = 0; sc < pSlavePriv->numCrtcs; sc++, c++) { in RRMonitorInitList()
235 if (pSlavePriv->crtcs[sc]->mode != NULL) in RRMonitorInitList()
236 mon_list->server_crtc[c] = pSlavePriv->crtcs[sc]; in RRMonitorInitList()
240 /* Walk the list of client-defined monitors, clearing the covered in RRMonitorInitList()
244 mon_list->num_client = pScrPriv->numMonitors; in RRMonitorInitList()
245 mon_list->client_primary = -1; in RRMonitorInitList()
247 for (m = 0; m < pScrPriv->numMonitors; m++) { in RRMonitorInitList()
248 RRMonitorPtr monitor = pScrPriv->monitors[m]; in RRMonitorInitList()
253 if (geom.box.x2 - geom.box.x1 == 0 || in RRMonitorInitList()
254 geom.box.y2 - geom.box.y1 == 0) { in RRMonitorInitList()
255 mon_list->num_client--; in RRMonitorInitList()
259 if (monitor->primary && mon_list->client_primary == -1) in RRMonitorInitList()
260 mon_list->client_primary = m; in RRMonitorInitList()
261 for (o = 0; o < monitor->numOutputs; o++) { in RRMonitorInitList()
262 for (c = 0; c < numCrtcs; c++) { in RRMonitorInitList()
263 RRCrtcPtr crtc = mon_list->server_crtc[c]; in RRMonitorInitList()
266 for (co = 0; co < crtc->numOutputs; co++) in RRMonitorInitList()
267 if (crtc->outputs[co]->id == monitor->outputs[o]) { in RRMonitorInitList()
268 mon_list->server_crtc[c] = NULL; in RRMonitorInitList()
280 mon_list->num_server = 0; in RRMonitorInitList()
281 mon_list->server_primary = -1; in RRMonitorInitList()
283 for (c = 0; c < mon_list->num_crtcs; c++) { in RRMonitorInitList()
284 RRCrtcPtr crtc = mon_list->server_crtc[c]; in RRMonitorInitList()
289 mon_list->num_server++; in RRMonitorInitList()
291 if (RRMonitorCrtcPrimary(crtc) && mon_list->server_primary == -1) in RRMonitorInitList()
292 mon_list->server_primary = c; in RRMonitorInitList()
300 free(list->server_crtc); in RRMonitorFiniList()
303 /* Construct a complete list of protocol-visible monitors, including
314 RRMonitorPtr mon, monitors; in RRMonitorMakeList() local
329 mon = monitors; in RRMonitorMakeList()
333 if (list.client_primary >= 0) { in RRMonitorMakeList()
334 RRMonitorSetFromClient(pScrPriv->monitors[list.client_primary], mon); in RRMonitorMakeList()
335 mon++; in RRMonitorMakeList()
336 } else if (list.server_primary >= 0) { in RRMonitorMakeList()
337 RRMonitorSetFromServer(list.server_crtc[list.server_primary], mon); in RRMonitorMakeList()
338 mon++; in RRMonitorMakeList()
341 /* Fill in the client-defined monitors next in RRMonitorMakeList()
343 for (m = 0; m < pScrPriv->numMonitors; m++) { in RRMonitorMakeList()
349 RRMonitorGetGeometry(pScrPriv->monitors[m], &geom); in RRMonitorMakeList()
350 if (geom.box.x2 - geom.box.x1 == 0 || in RRMonitorMakeList()
351 geom.box.y2 - geom.box.y1 == 0) { in RRMonitorMakeList()
355 RRMonitorSetFromClient(pScrPriv->monitors[m], mon); in RRMonitorMakeList()
357 mon->primary = FALSE; in RRMonitorMakeList()
358 else if (mon->primary) in RRMonitorMakeList()
360 mon++; in RRMonitorMakeList()
363 /* And finish with the list of crtc-inspired monitors in RRMonitorMakeList()
365 for (c = 0; c < list.num_crtcs; c++) { in RRMonitorMakeList()
367 if (c == list.server_primary && list.client_primary < 0) in RRMonitorMakeList()
373 RRMonitorSetFromServer(crtc, mon); in RRMonitorMakeList()
375 mon->primary = FALSE; in RRMonitorMakeList()
376 else if (mon->primary) in RRMonitorMakeList()
378 mon++; in RRMonitorMakeList()
394 return -1; in RRMonitorCountList()
414 monitor->numOutputs = noutput; in RRMonitorAlloc()
415 monitor->outputs = (RROutput *) (monitor + 1); in RRMonitorAlloc()
426 client->errorValue = name; in RRMonitorDelete()
430 for (m = 0; m < pScrPriv->numMonitors; m++) { in RRMonitorDelete()
431 RRMonitorPtr monitor = pScrPriv->monitors[m]; in RRMonitorDelete()
432 if (monitor->name == name) { in RRMonitorDelete()
433 memmove(pScrPriv->monitors + m, pScrPriv->monitors + m + 1, in RRMonitorDelete()
434 (pScrPriv->numMonitors - (m + 1)) * sizeof (RRMonitorPtr)); in RRMonitorDelete()
435 --pScrPriv->numMonitors; in RRMonitorDelete()
441 client->errorValue = name; in RRMonitorDelete()
453 for (o = 0; o < pScrPriv->numOutputs; o++) { in RRMonitorMatchesOutputName()
454 RROutputPtr output = pScrPriv->outputs[o]; in RRMonitorMatchesOutputName()
456 if (output->nameLength == len && !memcmp(output->name, str, len)) in RRMonitorMatchesOutputName()
477 if (RRMonitorMatchesOutputName(screen, monitor->name)) { in RRMonitorAdd()
478 client->errorValue = monitor->name; in RRMonitorAdd()
482 xorg_list_for_each_entry(slave, &screen->slave_list, slave_head) { in RRMonitorAdd()
483 if (!slave->is_output_slave) in RRMonitorAdd()
486 if (RRMonitorMatchesOutputName(slave, monitor->name)) { in RRMonitorAdd()
487 client->errorValue = monitor->name; in RRMonitorAdd()
496 for (m = 0; m < pScrPriv->numMonitors; m++) { in RRMonitorAdd()
497 if (pScrPriv->monitors[m]->name == monitor->name) { in RRMonitorAdd()
498 client->errorValue = monitor->name; in RRMonitorAdd()
505 * needs to not have any side-effects on failure in RRMonitorAdd()
507 if (pScrPriv->numMonitors) in RRMonitorAdd()
508 monitors = reallocarray(pScrPriv->monitors, in RRMonitorAdd()
509 pScrPriv->numMonitors + 1, in RRMonitorAdd()
517 pScrPriv->monitors = monitors; in RRMonitorAdd()
519 for (m = 0; m < pScrPriv->numMonitors; m++) { in RRMonitorAdd()
520 RRMonitorPtr existing = pScrPriv->monitors[m]; in RRMonitorAdd()
526 if (existing->name == monitor->name) { in RRMonitorAdd()
527 (void) RRMonitorDelete(client, screen, existing->name); in RRMonitorAdd()
532 * pre-existing Monitors. If removing the output causes the list in RRMonitorAdd()
537 for (eo = 0; eo < existing->numOutputs; eo++) { in RRMonitorAdd()
538 for (o = 0; o < monitor->numOutputs; o++) { in RRMonitorAdd()
539 if (monitor->outputs[o] == existing->outputs[eo]) { in RRMonitorAdd()
540 memmove(existing->outputs + eo, existing->outputs + eo + 1, in RRMonitorAdd()
541 (existing->numOutputs - (eo + 1)) * sizeof (RROutput)); in RRMonitorAdd()
542 --existing->numOutputs; in RRMonitorAdd()
543 --eo; in RRMonitorAdd()
547 if (existing->numOutputs == 0) { in RRMonitorAdd()
548 (void) RRMonitorDelete(client, screen, existing->name); in RRMonitorAdd()
552 if (monitor->primary) in RRMonitorAdd()
553 existing->primary = FALSE; in RRMonitorAdd()
558 pScrPriv->monitors[pScrPriv->numMonitors++] = monitor; in RRMonitorAdd()
568 for (m = 0; m < nmon; m++) in RRMonitorFreeList()
581 pScrPriv->numMonitors = 0; in RRMonitorInit()
582 pScrPriv->monitors = NULL; in RRMonitorInit()
594 for (m = 0; m < pScrPriv->numMonitors; m++) in RRMonitorClose()
595 RRMonitorFree(pScrPriv->monitors[m]); in RRMonitorClose()
596 free(pScrPriv->monitors); in RRMonitorClose()
597 pScrPriv->monitors = NULL; in RRMonitorClose()
598 pScrPriv->numMonitors = 0; in RRMonitorClose()
607 return pScrPriv->lastConfigTime.milliseconds; in RRMonitorTimestamp()
616 .sequenceNumber = client->sequence, in ProcRRGetMonitors()
617 .length = 0, in ProcRRGetMonitors()
628 r = dixLookupWindow(&window, stuff->window, client, DixGetAttrAccess); in ProcRRGetMonitors()
631 screen = window->drawable.pScreen; in ProcRRGetMonitors()
633 get_active = stuff->get_active; in ProcRRGetMonitors()
639 noutputs = 0; in ProcRRGetMonitors()
640 for (m = 0; m < nmonitors; m++) { in ProcRRGetMonitors()
649 if (client->swapped) { in ProcRRGetMonitors()
658 client->pSwapReplyFunc = (ReplySwapPtr) CopySwap32Write; in ProcRRGetMonitors()
660 for (m = 0; m < nmonitors; m++) { in ProcRRGetMonitors()
663 .name = monitor->name, in ProcRRGetMonitors()
664 .primary = monitor->primary, in ProcRRGetMonitors()
665 .automatic = monitor->automatic, in ProcRRGetMonitors()
666 .noutput = monitor->numOutputs, in ProcRRGetMonitors()
667 .x = monitor->geometry.box.x1, in ProcRRGetMonitors()
668 .y = monitor->geometry.box.y1, in ProcRRGetMonitors()
669 .width = monitor->geometry.box.x2 - monitor->geometry.box.x1, in ProcRRGetMonitors()
670 .height = monitor->geometry.box.y2 - monitor->geometry.box.y1, in ProcRRGetMonitors()
671 .widthInMillimeters = monitor->geometry.mmWidth, in ProcRRGetMonitors()
672 .heightInMillimeters = monitor->geometry.mmHeight, in ProcRRGetMonitors()
674 if (client->swapped) { in ProcRRGetMonitors()
686 WriteSwappedDataToClient(client, monitor->numOutputs * sizeof (RROutput), monitor->outputs); in ProcRRGetMonitors()
705 if (stuff->monitor.noutput != stuff->length - (SIZEOF(xRRSetMonitorReq) >> 2)) in ProcRRSetMonitor()
708 r = dixLookupWindow(&window, stuff->window, client, DixGetAttrAccess); in ProcRRSetMonitor()
711 screen = window->drawable.pScreen; in ProcRRSetMonitor()
713 if (!ValidAtom(stuff->monitor.name)) in ProcRRSetMonitor()
717 monitor = RRMonitorAlloc(stuff->monitor.noutput); in ProcRRSetMonitor()
722 monitor->pScreen = screen; in ProcRRSetMonitor()
723 monitor->name = stuff->monitor.name; in ProcRRSetMonitor()
724 monitor->primary = stuff->monitor.primary; in ProcRRSetMonitor()
725 monitor->automatic = FALSE; in ProcRRSetMonitor()
726 memcpy(monitor->outputs, stuff + 1, stuff->monitor.noutput * sizeof (RROutput)); in ProcRRSetMonitor()
727 monitor->geometry.box.x1 = stuff->monitor.x; in ProcRRSetMonitor()
728 monitor->geometry.box.y1 = stuff->monitor.y; in ProcRRSetMonitor()
729 monitor->geometry.box.x2 = stuff->monitor.x + stuff->monitor.width; in ProcRRSetMonitor()
730 monitor->geometry.box.y2 = stuff->monitor.y + stuff->monitor.height; in ProcRRSetMonitor()
731 monitor->geometry.mmWidth = stuff->monitor.widthInMillimeters; in ProcRRSetMonitor()
732 monitor->geometry.mmHeight = stuff->monitor.heightInMillimeters; in ProcRRSetMonitor()
751 r = dixLookupWindow(&window, stuff->window, client, DixGetAttrAccess); in ProcRRDeleteMonitor()
754 screen = window->drawable.pScreen; in ProcRRDeleteMonitor()
756 if (!ValidAtom(stuff->name)) { in ProcRRDeleteMonitor()
757 client->errorValue = stuff->name; in ProcRRDeleteMonitor()
761 r = RRMonitorDelete(client, screen, stuff->name); in ProcRRDeleteMonitor()