5
5
#if WLR_HAS_X11_BACKEND
6
6
#include <wlr/backend/x11.h>
7
7
#endif
8
+ #include <wlr/types/wlr_output.h>
8
9
#include "sway/commands.h"
10
+ #include "sway/output.h"
9
11
#include "sway/server.h"
10
12
#include "log.h"
11
13
12
14
static void create_output (struct wlr_backend * backend , void * data ) {
13
- bool * done = data ;
14
- if (* done ) {
15
+ struct wlr_output * * result = data ;
16
+ if (* result ) {
15
17
return ;
16
18
}
17
19
18
20
if (wlr_backend_is_wl (backend )) {
19
- wlr_wl_output_create (backend );
20
- * done = true;
21
+ * result = wlr_wl_output_create (backend );
21
22
} else if (wlr_backend_is_headless (backend )) {
22
- wlr_headless_add_output (backend , 1920 , 1080 );
23
- * done = true;
23
+ * result = wlr_headless_add_output (backend , 1920 , 1080 );
24
24
}
25
25
#if WLR_HAS_X11_BACKEND
26
26
else if (wlr_backend_is_x11 (backend )) {
27
- wlr_x11_output_create (backend );
28
- * done = true;
27
+ * result = wlr_x11_output_create (backend );
29
28
}
30
29
#endif
31
30
}
@@ -37,13 +36,24 @@ struct cmd_results *cmd_create_output(int argc, char **argv) {
37
36
sway_assert (wlr_backend_is_multi (server .backend ),
38
37
"Expected a multi backend" );
39
38
40
- bool done = false;
41
- wlr_multi_for_each_backend (server .backend , create_output , & done );
39
+ struct cmd_results * error = NULL ;
40
+ if ((error = checkarg (argc , "create_output" , EXPECTED_AT_MOST , 1 ))) {
41
+ return error ;
42
+ }
43
+ if (argc > 0 && all_output_by_name_or_id (argv [0 ])) {
44
+ return cmd_results_new (CMD_INVALID , "Output name already in use" );
45
+ }
46
+ struct wlr_output * result = NULL ;
47
+ wlr_multi_for_each_backend (server .backend , create_output , & result );
42
48
43
- if (!done ) {
49
+ if (!result ) {
44
50
return cmd_results_new (CMD_INVALID ,
45
51
"Can only create outputs for Wayland, X11 or headless backends" );
46
52
}
47
53
54
+ if (argc > 0 ) {
55
+ wlr_output_set_name (result , argv [0 ]);
56
+ }
57
+
48
58
return cmd_results_new (CMD_SUCCESS , NULL );
49
59
}
0 commit comments