Lines Matching refs:output

168     name_t	    output;
205 output_t *output;
328 output_t *output = calloc (1, sizeof (output_t));
330 if (!output)
332 output->next = NULL;
333 *outputs_tail = output;
334 outputs_tail = &output->next;
335 return output;
341 output_t *output;
343 for (output = outputs; output; output = output->next)
345 name_kind_t common = name->kind & output->output.kind;
347 if ((common & name_xid) && name->xid == output->output.xid)
349 if ((common & name_string) && !strcmp (name->string, output->output.string))
351 if ((common & name_index) && name->index == output->output.index)
354 return output;
358 find_output_by_xid (RROutput output)
363 set_name_xid (&output_name, output);
430 set_output_info (output_t *output, RROutput xid, XRROutputInfo *output_info)
434 /* sanity check output info */
439 /* set output name and info */
440 if (!(output->output.kind & name_xid))
441 set_name_xid (&output->output, xid);
442 if (!(output->output.kind & name_string))
443 set_name_string (&output->output, output_info->name);
444 output->output_info = output_info;
446 crtc = find_crtc_by_xid (output->output_info->crtc);
449 output->x = crtc->crtc_info->x;
450 output->y = crtc->crtc_info->y;
454 output->rotation &= ~0xf;
456 output->rotation |= (crtc->crtc_info->rotation & 0xf);
458 output->rotation = RR_Rotate_0;
500 crtc_add_output (crtc_t *crtc, output_t *output)
507 crtc->x = output->x;
508 crtc->y = output->y;
509 crtc->rotation = output->rotation;
510 crtc->mode_info = output->mode_info;
513 crtc->outputs[crtc->noutput++] = output;
519 output_t *output;
523 output = con_outputs[i].output;
524 if (!output->mode_info) continue;
525 if (output->crtc_info)
526 crtc_add_output (output->crtc_info, output);
533 output_t *output;
535 for (output = outputs; output; output = output->next)
537 if ((output->crtc_info) && (output->crtc_info->outputs)) {
538 free (output->crtc_info->outputs);
539 output->crtc_info = NULL;
588 rr_outputs[o] = crtc->outputs[o]->output.xid;
596 fprintf (stderr, " \"%s\"", crtc->outputs[o]->output.string);
781 * Use current output state to complete the output list
791 output_t *output;
794 if (!output_info) fatal ("could not get output 0x%x information", res->outputs[o]);
798 output = find_output (&output_name);
799 if (!output)
801 output = add_output ();
802 set_name_all (&output->output, &output_name);
805 set_output_info (output, res->outputs[o], output_info);
811 * Test whether 'crtc' can be used for 'output'
814 check_crtc_for_output (crtc_t *crtc, output_t *output)
822 other = con_outputs[i].output;
824 if (other == output)
833 /* see if the output connected to the crtc can clone to this output */
834 for (l = 0; l < output->output_info->nclone; l++)
835 if (output->output_info->clones[l] == other->output.xid)
838 if (l == output->output_info->nclone)
845 /* Check if the output is to be turned on */
848 if (crtc->mode_info != output->mode_info)
850 if (crtc->x != output->x)
852 if (crtc->y != output->y)
854 if (crtc->rotation != output->rotation)
862 find_crtc_for_output (output_t *output)
866 for (c = 0; c < output->output_info->ncrtc; c++)
870 crtc = find_crtc_by_xid (output->output_info->crtcs[c]);
871 if (!crtc) fatal ("cannot find crtc 0x%x\n", output->output_info->crtcs[c]);
873 if (check_crtc_for_output (crtc, output))
893 output_t *output = con_outputs[i].output;
896 if (!(output->changes & changes_relation)) continue;
898 if (output->mode_info == NULL) continue;
900 relation = output->relative_to;
904 output->x = 0;
905 output->y = 0;
906 output->changes |= changes_position;
920 switch (output->relation) {
922 output->y = relation->y;
923 output->x = relation->x - mode_width (output->mode_info, output->rotation);
926 output->y = relation->y;
927 output->x = relation->x + mode_width (relation->mode_info, relation->rotation);
930 output->x = relation->x;
931 output->y = relation->y - mode_height (output->mode_info, output->rotation);
934 output->x = relation->x;
935 output->y = relation->y + mode_height (relation->mode_info, relation->rotation);
938 output->x = relation->x;
939 output->y = relation->y;
941 output->changes |= changes_position;
958 output_t *output = con_outputs[i].output;
960 if (output->mode_info == NULL) continue;
962 if (output->x < min_x) min_x = output->x;
963 if (output->y < min_y) min_y = output->y;
970 output_t *output = con_outputs[i].output;
972 if (output->mode_info == NULL) continue;
974 output->x -= min_x;
975 output->y -= min_y;
976 output->changes |= changes_position;
990 output_t *output = con_outputs[i].output;
991 XRRModeInfo *mode_info = output->mode_info;
996 x = output->x;
997 y = output->y;
998 w = mode_width (mode_info, output->rotation);
999 h = mode_height (mode_info, output->rotation);
1028 * find the best mapping from output to crtc available
1033 output_t *output;
1043 output = outputs;
1046 * Score with this output disabled
1048 output->crtc_info = NULL;
1050 if (output->mode_info == NULL)
1055 * Now score with this output any valid crtc
1057 for (c = 0; c < output->output_info->ncrtc; c++)
1061 crtc = find_crtc_by_xid (output->output_info->crtcs[c]);
1063 fatal ("cannot find crtc 0x%x\n", output->output_info->crtcs[c]);
1067 if (!check_crtc_for_output (crtc, output))
1072 if (crtc == output->current_crtc_info)
1075 output->crtc_info = crtc;
1083 if (output->crtc_info != best_crtc)
1084 output->crtc_info = best_crtc;
1099 output_t *output;
1107 output = con_outputs[i].output;
1109 if (output->mode_info)
1111 if (output->crtc_info) {
1112 if (output->crtc_info->crtc_info->noutput > 0 &&
1113 (output->crtc_info->crtc_info->noutput > 1 ||
1114 output != find_output_by_xid (output->crtc_info->crtc_info->outputs[0])))
1117 output->crtc_info = find_crtc_for_output (output);
1118 if (!output->crtc_info)
1122 fprintf(stderr, "picked crtc 0x%lx for output %d (%s)\n",
1123 output->crtc_info->crtc.xid, i, output->output_info->name);
1138 for (output = outputs; output; output = output->next)
1139 output->current_crtc_info = output->crtc_info;
1141 for (output = outputs; output; output = output->next)
1143 if (output->mode_info && !output->crtc_info) {
1145 fprintf (stderr, "cannot find crtc for output %s\n",
1146 output->output.string);
1208 fprintf(stderr, "probed: output status changed\n");
1213 fprintf(stderr, "probed: no output status change\n");
1263 int ncrtc1 = co1.output->output_info->ncrtc;
1264 int ncrtc2 = co2.output->output_info->ncrtc;
1265 char *name1 = co1.output->output_info->name;
1266 char *name2 = co2.output->output_info->name;
1281 output_t *output = c0->output;
1293 x = output->x;
1294 y = output->y;
1295 w = mode_width (c0->smodes[i], output->rotation);
1296 h = mode_height (c0->smodes[i], output->rotation);
1313 x = output->x;
1314 y = output->y;
1315 w = mode_width (c0->smodes[i], output->rotation);
1316 h = mode_height (c0->smodes[i], output->rotation);
1331 if ((mode_width (c0->smodes[i1], output->rotation) >
1332 mode_width (c0->smodes[i2], output->rotation)) &&
1333 (mode_height (c0->smodes[i1], output->rotation) >
1334 mode_height (c0->smodes[i2], output->rotation))) {
1349 output_t *output = c->output;
1361 x = output->x;
1362 y = output->y;
1363 w = mode_width (mode_info, output->rotation);
1364 h = mode_height (mode_info, output->rotation);
1392 output_t *output;
1396 con_outputs[i].output = NULL;
1410 for (output = outputs; output; output = output->next) {
1411 XRROutputInfo *output_info = output->output_info;
1414 con_outputs[ncon].output = output;
1440 fatal ("crtc does not match for output\n");
1446 con_outputs[ncon].output->mode_info =
1453 dis_con_outputs[dis_ncon].output = output;
1465 con_outputs[j].output->output_info->name,
1467 con_outputs[j].output->rotation);
1468 for (i = 0; i < con_outputs[j].output->output_info->ncrtc; i++)
1469 fprintf(stderr, " 0x%lx", con_outputs[j].output->output_info->crtcs[i]);
1470 fprintf(stderr, ", using 0x%lx", con_outputs[j].output->output_info->crtc);
1476 dis_con_outputs[j].output->output_info->name,
1477 dis_con_outputs[j].output->output_info->ncrtc);
1478 for (i = 0; i < dis_con_outputs[j].output->output_info->ncrtc; i++)
1479 fprintf(stderr, " 0x%lx", dis_con_outputs[j].output->output_info->crtcs[i]);
1480 fprintf(stderr, ", using 0x%lx", dis_con_outputs[j].output->output_info->crtc);
1492 start_mode[j] = con_outputs[j].output->mode_info;
1493 init_rotation = con_outputs[j].output->rotation;
1494 init_x = con_outputs[j].output->x;
1495 init_y = con_outputs[j].output->y;
1559 output_t *output = con_outputs[i].output;
1562 output->relation = same_as;
1563 output->relative_to = NULL;
1565 output->x = init_x;
1566 output->y = init_y;
1567 output->rotation = init_rotation;
1569 output->x = 0;
1570 output->y = 0;
1666 output_t *output;
1668 output = con_outputs[i].output;
1670 if ((!output->mode_info) || (output->mode_info != new_mode[i])) {
1671 output->mode_info = new_mode[i];
1674 fprintf(stderr, "set output %d (%s) to mode %s rotation %d\n", i,
1675 con_outputs[i].output->output_info->name,
1676 con_outputs[i].output->mode_info->name,
1677 con_outputs[i].output->rotation);
1681 output->mode_info = NULL;
1684 fprintf(stderr, "turn off output %d (%s) \n",
1685 i, con_outputs[i].output->output_info->name);
1693 con_outputs[1].output->relative_to = con_outputs[0].output;
1694 con_outputs[1].output->relation = right_of;
1695 con_outputs[1].output->changes = changes_relation;
1696 con_outputs[0].output->changes = 0;
1699 con_outputs[0].output->relative_to = con_outputs[1].output;
1700 con_outputs[0].output->relation = right_of;
1701 con_outputs[0].output->changes = changes_relation;
1702 con_outputs[1].output->changes = 0;
1728 /* Now, take the deferred output off */
1729 output_t *output;
1733 output = con_outputs[save].output;
1734 output->mode_info = NULL;
1737 fprintf(stderr, "turn off output %d (%s) \n",
1738 save, con_outputs[save].output->output_info->name);
1740 crtc = output->crtc_info;
1997 /* Too long since last switch, need to check output changes */
1999 output_t *output, *next;
2001 output = outputs;
2002 while (output) {
2003 if (output->output_info)
2004 XRRFreeOutputInfo (output->output_info);
2005 if (output->crtc_info && output->crtc_info->outputs) {
2006 free(output->crtc_info->outputs);
2007 output->crtc_info->outputs = NULL;
2009 next = output->next;
2010 free(output);
2011 output = next;
2016 con_outputs[i].output = NULL;