/*
* Creates outputs according to the given specification.
* The specification must be in the format wxh+x+y, for example 1024x768+0+0,
+ * optionally followed by 'P' to indicate a primary output,
* with multiple outputs separated by commas:
- * 1900x1200+0+0,1280x1024+1900+0
+ * 1900x1200+0+0P,1280x1024+1900+0
*
*/
void fake_outputs_init(const char *output_spec) {
unsigned int x, y, width, height;
int chars_consumed;
while (sscanf(walk, "%ux%u+%u+%u%n", &width, &height, &x, &y, &chars_consumed) == 4) {
- DLOG("Parsed output as width = %u, height = %u at (%u, %u)\n",
- width, height, x, y);
+ walk += chars_consumed;
+ bool primary = false;
+ if (*walk == 'P') {
+ primary = true;
+ walk++;
+ }
+ if (*walk == ',')
+ walk++; /* Skip delimiter */
+ DLOG("Parsed output as width = %u, height = %u at (%u, %u)%s\n",
+ width, height, x, y, primary ? " (primary)" : "");
+
Output *new_output = get_screen_at(x, y);
if (new_output != NULL) {
DLOG("Re-used old output %p\n", new_output);
init_ws_for_output(new_output, output_get_content(new_output->con));
num_screens++;
}
-
- walk += chars_consumed;
- if (*walk == ',')
- walk++;
+ new_output->primary = primary;
}
if (num_screens == 0) {