dbus: Don't crash if can't make a connection
This commit is contained in:
		@ -222,9 +222,9 @@ main (int argc, char **argv)
 | 
				
			|||||||
        error = NULL;
 | 
					        error = NULL;
 | 
				
			||||||
        connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
 | 
					        connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
 | 
				
			||||||
        if (connection == NULL) {
 | 
					        if (connection == NULL) {
 | 
				
			||||||
            g_printerr ("Can't connect to the bus: %s\n", error->message);
 | 
					            g_printerr ("Can't connect to the bus: %s. "
 | 
				
			||||||
 | 
					                        "Visibility switching unavailable.", error->message);
 | 
				
			||||||
            g_error_free (error);
 | 
					            g_error_free (error);
 | 
				
			||||||
            exit (1);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case G_BUS_TYPE_NONE:
 | 
					    case G_BUS_TYPE_NONE:
 | 
				
			||||||
@ -246,25 +246,28 @@ main (int argc, char **argv)
 | 
				
			|||||||
        g_assert_not_reached ();
 | 
					        g_assert_not_reached ();
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    guint owner_id = 0;
 | 
				
			||||||
 | 
					    DBusHandler *service = NULL;
 | 
				
			||||||
 | 
					    if (connection) {
 | 
				
			||||||
 | 
					        service = dbus_handler_new(connection, DBUS_SERVICE_PATH);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DBusHandler *service = dbus_handler_new(connection, DBUS_SERVICE_PATH);
 | 
					        if (service == NULL) {
 | 
				
			||||||
 | 
					            g_printerr ("Can't create dbus server\n");
 | 
				
			||||||
 | 
					            exit (1);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        instance.dbus_handler = service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (service == NULL) {
 | 
					        owner_id = g_bus_own_name_on_connection (connection,
 | 
				
			||||||
        g_printerr ("Can't create dbus server\n");
 | 
					                                                 DBUS_SERVICE_INTERFACE,
 | 
				
			||||||
        exit (1);
 | 
					                                                 G_BUS_NAME_OWNER_FLAGS_NONE,
 | 
				
			||||||
    }
 | 
					                                                 on_name_acquired,
 | 
				
			||||||
    instance.dbus_handler = service;
 | 
					                                                 on_name_lost,
 | 
				
			||||||
 | 
					                                                 NULL,
 | 
				
			||||||
    guint owner_id = g_bus_own_name_on_connection (connection,
 | 
					                                                 NULL);
 | 
				
			||||||
                                             DBUS_SERVICE_INTERFACE,
 | 
					        if (owner_id == 0) {
 | 
				
			||||||
                                             G_BUS_NAME_OWNER_FLAGS_NONE,
 | 
					            g_printerr ("Can't own the name\n");
 | 
				
			||||||
                                             on_name_acquired,
 | 
					            exit (1);
 | 
				
			||||||
                                             on_name_lost,
 | 
					        }
 | 
				
			||||||
                                             NULL,
 | 
					 | 
				
			||||||
                                             NULL);
 | 
					 | 
				
			||||||
    if (owner_id == 0) {
 | 
					 | 
				
			||||||
        g_printerr ("Can't own the name\n");
 | 
					 | 
				
			||||||
        exit (1);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    instance.submission = get_submission(instance.wayland.input_method_manager,
 | 
					    instance.submission = get_submission(instance.wayland.input_method_manager,
 | 
				
			||||||
@ -296,9 +299,15 @@ main (int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    g_main_loop_run (loop);
 | 
					    g_main_loop_run (loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_bus_unown_name (owner_id);
 | 
					    if (connection) {
 | 
				
			||||||
    g_object_unref (service);
 | 
					        if (service) {
 | 
				
			||||||
    g_object_unref (connection);
 | 
					            if (owner_id != 0) {
 | 
				
			||||||
 | 
					                g_bus_unown_name (owner_id);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            g_object_unref (service);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        g_object_unref (connection);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    g_main_loop_unref (loop);
 | 
					    g_main_loop_unref (loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    squeek_wayland_deinit (&instance.wayland);
 | 
					    squeek_wayland_deinit (&instance.wayland);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user