grpc-proxy: Don't attempt to connect if there's no compositor running
[src/agl-compositor.git] / grpc-proxy / main-grpc.cpp
index 1e297c5..a8c1c5e 100644 (file)
@@ -275,7 +275,7 @@ global_add(void *data, struct wl_registry *reg, uint32_t id,
                sh->shell =
                        static_cast<struct agl_shell *>(wl_registry_bind(reg, id,
                                &agl_shell_interface,
-                               std::min(static_cast<uint32_t>(8), version)));
+                               std::min(static_cast<uint32_t>(10), version)));
                agl_shell_add_listener(sh->shell, &shell_listener, data);
                sh->version = version;
        } else if (strcmp(interface, "wl_output") == 0) {
@@ -299,7 +299,7 @@ global_add_init(void *data, struct wl_registry *reg, uint32_t id,
                sh->shell =
                        static_cast<struct agl_shell *>(wl_registry_bind(reg, id,
                                &agl_shell_interface,
-                               std::min(static_cast<uint32_t>(8), version)));
+                               std::min(static_cast<uint32_t>(10), version)));
                agl_shell_add_listener(sh->shell, &shell_listener_init, data);
                sh->version = version;
        }
@@ -386,6 +386,9 @@ __register_shell_init(void)
        struct shell_data_init *sh = new struct shell_data_init;
 
        wl_display = wl_display_connect(NULL);
+       if (!wl_display) {
+               goto err;
+       }
        registry = wl_display_get_registry(wl_display);
        sh->wait_for_bound = true;
        sh->bound_fail = false;
@@ -480,6 +483,10 @@ start_agl_shell_client(void)
 
        struct shell_data *sh = new struct shell_data;
 
+       if (!wl_display) {
+               goto err;
+       }
+
        sh->wl_display = wl_display;
        sh->wait_for_doas = true;
        sh->wait_for_bound = true;
@@ -578,6 +585,7 @@ int main(int argc, char **argv)
                ret = wl_display_dispatch(sh->wl_display);
        }
 
+       thread.join();
        destroy_shell_data(sh);
        return 0;
 }