Call the save completion callback when ladish_js_save_app() fails. #185
This commit is contained in:
parent
88712ad5e5
commit
6df7809837
|
@ -285,13 +285,15 @@ static void ladish_js_save_complete(struct ladish_app_supervisor * supervisor_pt
|
|||
if (app_ptr->state == LADISH_APP_STATE_STARTED &&
|
||||
strcmp(app_ptr->level, LADISH_APP_LEVEL_JACKSESSION) == 0 &&
|
||||
app_ptr->js_commandline == NULL)
|
||||
{ /* a strdup() call has failed, free js commandline buffers allocated by succeeded strdup() calls */
|
||||
{ /* a strdup() call has failed, or js save failed for some other reason,
|
||||
free js commandline buffers allocated by succeeded strdup() calls */
|
||||
list_for_each(node_ptr, &supervisor_ptr->applist)
|
||||
{
|
||||
app_ptr = list_entry(node_ptr, struct ladish_app, siblings);
|
||||
free(app_ptr->js_commandline);
|
||||
app_ptr->js_commandline = NULL;
|
||||
}
|
||||
success = false;
|
||||
goto fail_rm_temp_dir;
|
||||
}
|
||||
}
|
||||
|
@ -722,6 +724,8 @@ exit:
|
|||
#define app_ptr ((struct ladish_app *)context)
|
||||
|
||||
static void ladish_js_app_save_complete(void * context, const char * commandline)
|
||||
{
|
||||
if (commandline != NULL)
|
||||
{
|
||||
log_info("JS app saved, commandline '%s'", commandline);
|
||||
ASSERT(app_ptr->supervisor->js_temp_dir != NULL);
|
||||
|
@ -732,6 +736,12 @@ static void ladish_js_app_save_complete(void * context, const char * commandline
|
|||
{
|
||||
log_error("strdup() failed for JS app '%s' commandline '%s'", app_ptr->name, commandline);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT(app_ptr->js_commandline == NULL);
|
||||
log_error("JACK session save failed for JS app '%s'", app_ptr->name);
|
||||
}
|
||||
|
||||
if (app_ptr->supervisor->pending_js_saves != 1)
|
||||
{
|
||||
|
@ -741,7 +751,7 @@ static void ladish_js_app_save_complete(void * context, const char * commandline
|
|||
return;
|
||||
}
|
||||
|
||||
log_info("Last JS app saved");
|
||||
log_info("No more pending JS app saves");
|
||||
app_ptr->supervisor->pending_js_saves = 0;
|
||||
|
||||
ladish_js_save_complete(app_ptr->supervisor);
|
||||
|
@ -759,7 +769,10 @@ static inline void ladish_app_initiate_save(struct ladish_app * app_ptr)
|
|||
else if (strcmp(app_ptr->level, LADISH_APP_LEVEL_JACKSESSION) == 0)
|
||||
{
|
||||
log_info("Initiating JACK session save for '%s'", app_ptr->name);
|
||||
ladish_js_save_app(app_ptr->uuid, app_ptr->supervisor->js_temp_dir, app_ptr, ladish_js_app_save_complete);
|
||||
if (!ladish_js_save_app(app_ptr->uuid, app_ptr->supervisor->js_temp_dir, app_ptr, ladish_js_app_save_complete))
|
||||
{
|
||||
ladish_js_app_save_complete(app_ptr, NULL);
|
||||
}
|
||||
}
|
||||
else if (strcmp(app_ptr->level, LADISH_APP_LEVEL_1) == 0)
|
||||
{
|
||||
|
@ -1173,6 +1186,8 @@ ladish_app_supervisor_save(
|
|||
struct ladish_app * app_ptr;
|
||||
bool success;
|
||||
|
||||
ASSERT(callback != NULL);
|
||||
|
||||
ASSERT(supervisor_ptr->js_temp_dir == NULL);
|
||||
ASSERT(supervisor_ptr->pending_js_saves == 0);
|
||||
list_for_each(node_ptr, &supervisor_ptr->applist)
|
||||
|
@ -1186,6 +1201,9 @@ ladish_app_supervisor_save(
|
|||
}
|
||||
}
|
||||
|
||||
supervisor_ptr->save_callback_context = context;
|
||||
supervisor_ptr->save_callback = callback;
|
||||
|
||||
if (supervisor_ptr->pending_js_saves > 0)
|
||||
{
|
||||
ASSERT(supervisor_ptr->dir != NULL);
|
||||
|
@ -1203,14 +1221,6 @@ ladish_app_supervisor_save(
|
|||
}
|
||||
|
||||
log_info("saving %u JACK session apps to '%s'", supervisor_ptr->pending_js_saves, supervisor_ptr->js_temp_dir);
|
||||
|
||||
supervisor_ptr->save_callback_context = context;
|
||||
supervisor_ptr->save_callback = callback;
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSERT(supervisor_ptr->save_callback_context == NULL);
|
||||
ASSERT(supervisor_ptr->save_callback == NULL);
|
||||
}
|
||||
|
||||
list_for_each(node_ptr, &supervisor_ptr->applist)
|
||||
|
@ -1240,11 +1250,18 @@ reset_js_pending_saves:
|
|||
supervisor_ptr->pending_js_saves = 0;
|
||||
success = false;
|
||||
exit:
|
||||
if (supervisor_ptr->pending_js_saves == 0)
|
||||
{
|
||||
ASSERT(supervisor_ptr->save_callback == NULL);
|
||||
ASSERT(callback != NULL);
|
||||
if (supervisor_ptr->pending_js_saves == 0 && supervisor_ptr->save_callback != NULL)
|
||||
{ /* Room/studio without js apps.
|
||||
In case of ladish_js_save_app() failure,
|
||||
the callback will either be called already or
|
||||
will be called later when all pending js app saves are done.
|
||||
In former case callback will be NULL.
|
||||
In latter case pending_js_saves will be greater than zero. */
|
||||
ASSERT(supervisor_ptr->save_callback == callback);
|
||||
ASSERT(supervisor_ptr->save_callback_context = context);
|
||||
callback(context, success);
|
||||
supervisor_ptr->save_callback = NULL;
|
||||
supervisor_ptr->save_callback_context = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue