Lines Matching full:output
30 * Notify the output of some change
33 RROutputChanged(RROutputPtr output, Bool configChanged) in RROutputChanged() argument
36 ScreenPtr pScreen = output->pScreen; in RROutputChanged()
39 output->changed = TRUE; in RROutputChanged()
59 * Create an output
66 RROutputPtr output; in RROutputCreate() local
83 output = malloc(sizeof(RROutputRec) + nameLength + 1); in RROutputCreate()
84 if (!output) in RROutputCreate()
86 output->id = FakeClientID(0); in RROutputCreate()
87 output->pScreen = pScreen; in RROutputCreate()
88 output->name = (char *) (output + 1); in RROutputCreate()
89 output->nameLength = nameLength; in RROutputCreate()
90 memcpy(output->name, name, nameLength); in RROutputCreate()
91 output->name[nameLength] = '\0'; in RROutputCreate()
92 output->connection = RR_UnknownConnection; in RROutputCreate()
93 output->subpixelOrder = SubPixelUnknown; in RROutputCreate()
94 output->mmWidth = 0; in RROutputCreate()
95 output->mmHeight = 0; in RROutputCreate()
96 output->crtc = NULL; in RROutputCreate()
97 output->numCrtcs = 0; in RROutputCreate()
98 output->crtcs = NULL; in RROutputCreate()
99 output->numClones = 0; in RROutputCreate()
100 output->clones = NULL; in RROutputCreate()
101 output->numModes = 0; in RROutputCreate()
102 output->numPreferred = 0; in RROutputCreate()
103 output->modes = NULL; in RROutputCreate()
104 output->numUserModes = 0; in RROutputCreate()
105 output->userModes = NULL; in RROutputCreate()
106 output->properties = NULL; in RROutputCreate()
107 output->pendingProperties = FALSE; in RROutputCreate()
108 output->changed = FALSE; in RROutputCreate()
109 output->nonDesktop = FALSE; in RROutputCreate()
110 output->devPrivate = devPrivate; in RROutputCreate()
112 if (!AddResource(output->id, RROutputType, (void *) output)) in RROutputCreate()
115 pScrPriv->outputs[pScrPriv->numOutputs++] = output; in RROutputCreate()
120 (void) RRConfigureOutputProperty(output, nonDesktopAtom, FALSE, FALSE, FALSE, in RROutputCreate()
123 RROutputSetNonDesktop(output, FALSE); in RROutputCreate()
126 return output; in RROutputCreate()
130 * Notify extension that output parameters have been changed
133 RROutputSetClones(RROutputPtr output, RROutputPtr * clones, int numClones) in RROutputSetClones() argument
138 if (numClones == output->numClones) { in RROutputSetClones()
140 if (output->clones[i] != clones[i]) in RROutputSetClones()
152 free(output->clones); in RROutputSetClones()
154 output->clones = newClones; in RROutputSetClones()
155 output->numClones = numClones; in RROutputSetClones()
156 RROutputChanged(output, TRUE); in RROutputSetClones()
161 RROutputSetModes(RROutputPtr output, in RROutputSetModes() argument
167 if (numModes == output->numModes && numPreferred == output->numPreferred) { in RROutputSetModes()
169 if (output->modes[i] != modes[i]) in RROutputSetModes()
185 if (output->modes) { in RROutputSetModes()
186 for (i = 0; i < output->numModes; i++) in RROutputSetModes()
187 RRModeDestroy(output->modes[i]); in RROutputSetModes()
188 free(output->modes); in RROutputSetModes()
191 output->modes = newModes; in RROutputSetModes()
192 output->numModes = numModes; in RROutputSetModes()
193 output->numPreferred = numPreferred; in RROutputSetModes()
194 RROutputChanged(output, TRUE); in RROutputSetModes()
199 RROutputAddUserMode(RROutputPtr output, RRModePtr mode) in RROutputAddUserMode() argument
202 ScreenPtr pScreen = output->pScreen; in RROutputAddUserMode()
207 /* Check to see if this mode is already listed for this output */ in RROutputAddUserMode()
208 for (m = 0; m < output->numModes + output->numUserModes; m++) { in RROutputAddUserMode()
209 RRModePtr e = (m < output->numModes ? in RROutputAddUserMode()
210 output->modes[m] : in RROutputAddUserMode()
211 output->userModes[m - output->numModes]); in RROutputAddUserMode()
218 if (!pScrPriv->rrOutputValidateMode(pScreen, output, mode)) in RROutputAddUserMode()
221 if (output->userModes) in RROutputAddUserMode()
222 newModes = reallocarray(output->userModes, in RROutputAddUserMode()
223 output->numUserModes + 1, sizeof(RRModePtr)); in RROutputAddUserMode()
229 output->userModes = newModes; in RROutputAddUserMode()
230 output->userModes[output->numUserModes++] = mode; in RROutputAddUserMode()
232 RROutputChanged(output, TRUE); in RROutputAddUserMode()
238 RROutputDeleteUserMode(RROutputPtr output, RRModePtr mode) in RROutputDeleteUserMode() argument
243 for (m = 0; m < output->numUserModes; m++) { in RROutputDeleteUserMode()
244 RRModePtr e = output->userModes[m]; in RROutputDeleteUserMode()
250 if (m == output->numUserModes) in RROutputDeleteUserMode()
253 /* make sure the mode isn't active for this output */ in RROutputDeleteUserMode()
254 if (output->crtc && output->crtc->mode == mode) in RROutputDeleteUserMode()
257 memmove(output->userModes + m, output->userModes + m + 1, in RROutputDeleteUserMode()
258 (output->numUserModes - m - 1) * sizeof(RRModePtr)); in RROutputDeleteUserMode()
259 output->numUserModes--; in RROutputDeleteUserMode()
265 RROutputSetCrtcs(RROutputPtr output, RRCrtcPtr * crtcs, int numCrtcs) in RROutputSetCrtcs() argument
270 if (numCrtcs == output->numCrtcs) { in RROutputSetCrtcs()
272 if (output->crtcs[i] != crtcs[i]) in RROutputSetCrtcs()
284 free(output->crtcs); in RROutputSetCrtcs()
286 output->crtcs = newCrtcs; in RROutputSetCrtcs()
287 output->numCrtcs = numCrtcs; in RROutputSetCrtcs()
288 RROutputChanged(output, TRUE); in RROutputSetCrtcs()
293 RROutputSetConnection(RROutputPtr output, CARD8 connection) in RROutputSetConnection() argument
295 if (output->connection == connection) in RROutputSetConnection()
297 output->connection = connection; in RROutputSetConnection()
298 RROutputChanged(output, TRUE); in RROutputSetConnection()
303 RROutputSetSubpixelOrder(RROutputPtr output, int subpixelOrder) in RROutputSetSubpixelOrder() argument
305 if (output->subpixelOrder == subpixelOrder) in RROutputSetSubpixelOrder()
308 output->subpixelOrder = subpixelOrder; in RROutputSetSubpixelOrder()
309 RROutputChanged(output, FALSE); in RROutputSetSubpixelOrder()
314 RROutputSetPhysicalSize(RROutputPtr output, int mmWidth, int mmHeight) in RROutputSetPhysicalSize() argument
316 if (output->mmWidth == mmWidth && output->mmHeight == mmHeight) in RROutputSetPhysicalSize()
318 output->mmWidth = mmWidth; in RROutputSetPhysicalSize()
319 output->mmHeight = mmHeight; in RROutputSetPhysicalSize()
320 RROutputChanged(output, FALSE); in RROutputSetPhysicalSize()
325 RROutputSetNonDesktop(RROutputPtr output, Bool nonDesktop) in RROutputSetNonDesktop() argument
334 return RRChangeOutputProperty(output, nonDesktopProp, XA_INTEGER, 32, in RROutputSetNonDesktop()
339 RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output) in RRDeliverOutputEvent() argument
344 RRCrtcPtr crtc = output->crtc; in RRDeliverOutputEvent()
353 .output = output->id, in RRDeliverOutputEvent()
357 .connection = output->nonDesktop ? RR_Disconnected : output->connection, in RRDeliverOutputEvent()
358 .subpixelOrder = output->subpixelOrder in RRDeliverOutputEvent()
364 * Destroy a Output at shutdown
367 RROutputDestroy(RROutputPtr output) in RROutputDestroy() argument
369 FreeResource(output->id, 0); in RROutputDestroy()
375 RROutputPtr output = (RROutputPtr) value; in RROutputDestroyResource() local
376 ScreenPtr pScreen = output->pScreen; in RROutputDestroyResource()
387 if (lease->outputs[o] == output) { in RROutputDestroyResource()
394 if (pScrPriv->primaryOutput == output) in RROutputDestroyResource()
398 if (pScrPriv->outputs[i] == output) { in RROutputDestroyResource()
408 if (output->modes) { in RROutputDestroyResource()
409 for (m = 0; m < output->numModes; m++) in RROutputDestroyResource()
410 RRModeDestroy(output->modes[m]); in RROutputDestroyResource()
411 free(output->modes); in RROutputDestroyResource()
414 for (m = 0; m < output->numUserModes; m++) in RROutputDestroyResource()
415 RRModeDestroy(output->userModes[m]); in RROutputDestroyResource()
416 free(output->userModes); in RROutputDestroyResource()
418 free(output->crtcs); in RROutputDestroyResource()
419 free(output->clones); in RROutputDestroyResource()
420 RRDeleteAllOutputProperties(output); in RROutputDestroyResource()
421 free(output); in RROutputDestroyResource()
426 * Initialize output type
431 RROutputType = CreateNewResourceType(RROutputDestroyResource, "OUTPUT"); in RROutputInit()
439 * Initialize output type error value
454 RROutputPtr output; in ProcRRGetOutputInfo() local
467 VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); in ProcRRGetOutputInfo()
469 leased = RROutputIsLeased(output); in ProcRRGetOutputInfo()
471 pScreen = output->pScreen; in ProcRRGetOutputInfo()
490 .nameLength = output->nameLength in ProcRRGetOutputInfo()
510 .crtc = output->crtc ? output->crtc->id : None, in ProcRRGetOutputInfo()
511 .mmWidth = output->mmWidth, in ProcRRGetOutputInfo()
512 .mmHeight = output->mmHeight, in ProcRRGetOutputInfo()
513 .connection = output->nonDesktop ? RR_Disconnected : output->connection, in ProcRRGetOutputInfo()
514 .subpixelOrder = output->subpixelOrder, in ProcRRGetOutputInfo()
515 .nCrtcs = output->numCrtcs, in ProcRRGetOutputInfo()
516 .nModes = output->numModes + output->numUserModes, in ProcRRGetOutputInfo()
517 .nPreferred = output->numPreferred, in ProcRRGetOutputInfo()
518 .nClones = output->numClones, in ProcRRGetOutputInfo()
519 .nameLength = output->nameLength in ProcRRGetOutputInfo()
521 extraLen = ((output->numCrtcs + in ProcRRGetOutputInfo()
522 output->numModes + output->numUserModes + in ProcRRGetOutputInfo()
523 output->numClones + bytes_to_int32(rep.nameLength)) << 2); in ProcRRGetOutputInfo()
535 modes = (RRMode *) (crtcs + output->numCrtcs); in ProcRRGetOutputInfo()
536 clones = (RROutput *) (modes + output->numModes + output->numUserModes); in ProcRRGetOutputInfo()
537 name = (char *) (clones + output->numClones); in ProcRRGetOutputInfo()
539 for (i = 0; i < output->numCrtcs; i++) { in ProcRRGetOutputInfo()
540 crtcs[i] = output->crtcs[i]->id; in ProcRRGetOutputInfo()
544 for (i = 0; i < output->numModes + output->numUserModes; i++) { in ProcRRGetOutputInfo()
545 if (i < output->numModes) in ProcRRGetOutputInfo()
546 modes[i] = output->modes[i]->mode.id; in ProcRRGetOutputInfo()
548 modes[i] = output->userModes[i - output->numModes]->mode.id; in ProcRRGetOutputInfo()
552 for (i = 0; i < output->numClones; i++) { in ProcRRGetOutputInfo()
553 clones[i] = output->clones[i]->id; in ProcRRGetOutputInfo()
558 memcpy(name, output->name, output->nameLength); in ProcRRGetOutputInfo()
582 RRSetPrimaryOutput(ScreenPtr pScreen, rrScrPrivPtr pScrPriv, RROutputPtr output) in RRSetPrimaryOutput() argument
584 if (pScrPriv->primaryOutput == output) in RRSetPrimaryOutput()
594 if (output) { in RRSetPrimaryOutput()
595 pScrPriv->primaryOutput = output; in RRSetPrimaryOutput()
596 RROutputChanged(output, 0); in RRSetPrimaryOutput()
608 RROutputPtr output = NULL; in ProcRRSetOutputPrimary() local
620 if (stuff->output) { in ProcRRSetOutputPrimary()
621 VERIFY_RR_OUTPUT(stuff->output, output, DixReadAccess); in ProcRRSetOutputPrimary()
623 if (RROutputIsLeased(output)) in ProcRRSetOutputPrimary()
626 if (!output->pScreen->isGPU && output->pScreen != pWin->drawable.pScreen) { in ProcRRSetOutputPrimary()
630 if (output->pScreen->isGPU && output->pScreen->current_master != pWin->drawable.pScreen) { in ProcRRSetOutputPrimary()
639 RRSetPrimaryOutput(pWin->drawable.pScreen, pScrPriv, output); in ProcRRSetOutputPrimary()
645 RRSetPrimaryOutput(slave, rrGetScrPriv(slave), output); in ProcRRSetOutputPrimary()
675 .output = primary ? primary->id : None in ProcRRGetOutputPrimary()
680 swapl(&rep.output); in ProcRRGetOutputPrimary()