aboutsummaryrefslogtreecommitdiff
path: root/sway/main.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2015-08-13 11:00:00 -0400
committerDrew DeVault <sir@cmpwn.com>2015-08-13 11:00:00 -0400
commit94e81fd64c4f63815047fa1ad895cade9afa8bd4 (patch)
tree9770eded52cae4f9d3d033123e1470d7873624c5 /sway/main.c
parent9475548f2426b3892a6d14961af36edc49b72182 (diff)
parent0a205776d7023cb8dea0d62994dff7b01d19dbcf (diff)
Merge pull request #23 from taiyu-len/master
moving things around + statics + forking + exec cleanup + fixed cmd_focus return + keep exec programs out of logs
Diffstat (limited to 'sway/main.c')
-rw-r--r--sway/main.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/sway/main.c b/sway/main.c
index a7814364..7477b08c 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -2,40 +2,22 @@
#include <stdlib.h>
#include <stdbool.h>
#include <wlc/wlc.h>
+#include <sys/wait.h>
+#include <signal.h>
#include "layout.h"
#include "config.h"
#include "log.h"
#include "handlers.h"
+static void sigchld_handle(int signal);
int main(int argc, char **argv) {
init_log(L_DEBUG); // TODO: Control this with command line arg
init_layout();
- static struct wlc_interface interface = {
- .output = {
- .created = handle_output_created,
- .destroyed = handle_output_destroyed,
- .resolution = handle_output_resolution_change,
- .focus = handle_output_focused
- },
- .view = {
- .created = handle_view_created,
- .destroyed = handle_view_destroyed,
- .focus = handle_view_focus,
- .request = {
- .geometry = handle_view_geometry_request
- }
- },
- .keyboard = {
- .key = handle_key
- },
- .pointer = {
- .motion = handle_pointer_motion,
- .button = handle_pointer_button
- }
-
- };
+ /* Signal handling */
+ signal(SIGCHLD, sigchld_handle);
+
setenv("WLC_DIM", "0", 0);
if (!wlc_init(&interface, argc, argv)) {
@@ -50,3 +32,8 @@ int main(int argc, char **argv) {
wlc_run();
return 0;
}
+
+static void sigchld_handle(int signal) {
+ (void) signal;
+ while (waitpid((pid_t)-1, 0, WNOHANG) > 0);
+}