Don't assume studio is stopped when it is present initially. Fixes #48
This commit is contained in:
parent
617158f6f9
commit
9aa1d74a7e
20
gui/main.c
20
gui/main.c
|
@ -623,11 +623,27 @@ void control_proxy_on_daemon_disappeared(bool clean_exit)
|
|||
g_ladishd_poll_source_tag = g_timeout_add(500, poll_ladishd, NULL);
|
||||
}
|
||||
|
||||
void control_proxy_on_studio_appeared(void)
|
||||
void control_proxy_on_studio_appeared(bool initial)
|
||||
{
|
||||
char * name;
|
||||
char * name;
|
||||
bool started;
|
||||
|
||||
g_studio_state = STUDIO_STATE_STOPPED;
|
||||
|
||||
if (initial)
|
||||
{
|
||||
if (!studio_proxy_is_started(&started))
|
||||
{
|
||||
log_error("intially, studio is present but is_started() check failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (started)
|
||||
{
|
||||
g_studio_state = STUDIO_STATE_STARTED;
|
||||
}
|
||||
}
|
||||
|
||||
if (studio_state_changed(&name))
|
||||
{
|
||||
if (g_studio_view != NULL)
|
||||
|
|
|
@ -32,7 +32,7 @@ static bool g_clean_exit;
|
|||
static void on_studio_appeared(void * context, DBusMessage * message_ptr)
|
||||
{
|
||||
log_info("StudioAppeared");
|
||||
control_proxy_on_studio_appeared();
|
||||
control_proxy_on_studio_appeared(false);
|
||||
}
|
||||
|
||||
static void on_studio_disappeared(void * context, DBusMessage * message_ptr)
|
||||
|
@ -106,7 +106,7 @@ bool control_proxy_init(void)
|
|||
if (studio_present)
|
||||
{
|
||||
log_info("Initial studio appear");
|
||||
control_proxy_on_studio_appeared();
|
||||
control_proxy_on_studio_appeared(true);
|
||||
}
|
||||
|
||||
if (!dbus_register_object_signal_hooks(g_dbus_connection, SERVICE_NAME, CONTROL_OBJECT_PATH, IFACE_CONTROL, NULL, g_signal_hooks))
|
||||
|
|
|
@ -34,7 +34,7 @@ bool control_proxy_init(void);
|
|||
void control_proxy_uninit(void);
|
||||
void control_proxy_on_daemon_appeared(void);
|
||||
void control_proxy_on_daemon_disappeared(bool clean_exit);
|
||||
void control_proxy_on_studio_appeared(void);
|
||||
void control_proxy_on_studio_appeared(bool initial);
|
||||
void control_proxy_on_studio_disappeared(void);
|
||||
bool control_proxy_get_studio_list(void (* callback)(void * context, const char * studio_name), void * context);
|
||||
bool control_proxy_new_studio(const char * studio_name);
|
||||
|
|
|
@ -181,3 +181,17 @@ bool studio_proxy_stop(void)
|
|||
{
|
||||
return dbus_call(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "Stop", "", "");
|
||||
}
|
||||
|
||||
bool studio_proxy_is_started(bool * is_started_ptr)
|
||||
{
|
||||
dbus_bool_t is_started;
|
||||
|
||||
if (!dbus_call(SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "IsStarted", "", "b", &is_started))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
*is_started_ptr = is_started;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -41,5 +41,6 @@ void studio_proxy_set_renamed_callback(void (* callback)(const char * new_studio
|
|||
void studio_proxy_set_startstop_callbacks(void (* started_callback)(void), void (* stopped_callback)(void), void (* crashed_callback)(void));
|
||||
bool studio_proxy_start(void);
|
||||
bool studio_proxy_stop(void);
|
||||
bool studio_proxy_is_started(bool * is_started_ptr);
|
||||
|
||||
#endif /* #ifndef STUDIO_PROXY_H__2CEC623F_C998_4618_A947_D1A0016DF978__INCLUDED */
|
||||
|
|
Loading…
Reference in New Issue