Changeset 6df7809837f5abf82df57c6f8cc01f41b2837648

Show
Ignore:
Timestamp:
10/11/11 03:52:58 (20 months ago)
Author:
Nedko Arnaudov <nedko@…>
Children:
95fdd69973113d5070481e9ecf7926acc12ba60f
Parents:
88712ad5e512167bcebb1e7e2aed736aead24078
git-author:
Nedko Arnaudov <nedko@arnaudov.name> / 2011-10-11T03:49:03Z+0300
git-committer:
Nedko Arnaudov <nedko@arnaudov.name> / 2011-10-11T03:52:58Z+0300
Message:

Call the save completion callback when ladish_js_save_app() fails. #185

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • daemon/app_supervisor.c

    rf42b4fb r6df7809  
    286286        strcmp(app_ptr->level, LADISH_APP_LEVEL_JACKSESSION) == 0 && 
    287287        app_ptr->js_commandline == NULL) 
    288     { /* a strdup() call has failed, free js commandline buffers allocated by succeeded strdup() calls */ 
     288    { /* a strdup() call has failed, or js save failed for some other reason, 
     289         free js commandline buffers allocated by succeeded strdup() calls */ 
    289290      list_for_each(node_ptr, &supervisor_ptr->applist) 
    290291      { 
     
    293294        app_ptr->js_commandline = NULL; 
    294295      } 
     296      success = false; 
    295297      goto fail_rm_temp_dir; 
    296298    } 
     
    724726static void ladish_js_app_save_complete(void * context, const char * commandline) 
    725727{ 
    726   log_info("JS app saved, commandline '%s'", commandline); 
    727   ASSERT(app_ptr->supervisor->js_temp_dir != NULL); 
    728  
    729   ASSERT(app_ptr->js_commandline == NULL); 
    730   app_ptr->js_commandline = strdup(commandline); 
    731   if (app_ptr->js_commandline == NULL) 
    732   { 
    733     log_error("strdup() failed for JS app '%s' commandline '%s'", app_ptr->name, commandline); 
     728  if (commandline != NULL) 
     729  { 
     730    log_info("JS app saved, commandline '%s'", commandline); 
     731    ASSERT(app_ptr->supervisor->js_temp_dir != NULL); 
     732 
     733    ASSERT(app_ptr->js_commandline == NULL); 
     734    app_ptr->js_commandline = strdup(commandline); 
     735    if (app_ptr->js_commandline == NULL) 
     736    { 
     737      log_error("strdup() failed for JS app '%s' commandline '%s'", app_ptr->name, commandline); 
     738    } 
     739  } 
     740  else 
     741  { 
     742    ASSERT(app_ptr->js_commandline == NULL); 
     743    log_error("JACK session save failed for JS app '%s'", app_ptr->name); 
    734744  } 
    735745 
     
    742752  } 
    743753 
    744   log_info("Last JS app saved"); 
     754  log_info("No more pending JS app saves"); 
    745755  app_ptr->supervisor->pending_js_saves = 0; 
    746756 
     
    760770  { 
    761771    log_info("Initiating JACK session save for '%s'", app_ptr->name); 
    762     ladish_js_save_app(app_ptr->uuid, app_ptr->supervisor->js_temp_dir, app_ptr, ladish_js_app_save_complete); 
     772    if (!ladish_js_save_app(app_ptr->uuid, app_ptr->supervisor->js_temp_dir, app_ptr, ladish_js_app_save_complete)) 
     773    { 
     774      ladish_js_app_save_complete(app_ptr, NULL); 
     775    } 
    763776  } 
    764777  else if (strcmp(app_ptr->level, LADISH_APP_LEVEL_1) == 0) 
     
    11741187  bool success; 
    11751188 
     1189  ASSERT(callback != NULL); 
     1190 
    11761191  ASSERT(supervisor_ptr->js_temp_dir == NULL); 
    11771192  ASSERT(supervisor_ptr->pending_js_saves == 0); 
     
    11871202  } 
    11881203 
     1204  supervisor_ptr->save_callback_context = context; 
     1205  supervisor_ptr->save_callback = callback; 
     1206 
    11891207  if (supervisor_ptr->pending_js_saves > 0) 
    11901208  { 
     
    12041222 
    12051223    log_info("saving %u JACK session apps to '%s'", supervisor_ptr->pending_js_saves, supervisor_ptr->js_temp_dir); 
    1206  
    1207     supervisor_ptr->save_callback_context = context; 
    1208     supervisor_ptr->save_callback = callback; 
    1209   } 
    1210   else 
    1211   { 
    1212     ASSERT(supervisor_ptr->save_callback_context == NULL); 
    1213     ASSERT(supervisor_ptr->save_callback == NULL); 
    12141224  } 
    12151225 
     
    12411251  success = false; 
    12421252exit: 
    1243   if (supervisor_ptr->pending_js_saves == 0) 
    1244   { 
    1245     ASSERT(supervisor_ptr->save_callback == NULL); 
    1246     ASSERT(callback != NULL); 
     1253  if (supervisor_ptr->pending_js_saves == 0 && supervisor_ptr->save_callback != NULL) 
     1254  { /* Room/studio without js apps. 
     1255       In case of ladish_js_save_app() failure, 
     1256       the callback will either be called already or 
     1257       will be called later when all pending js app saves are done. 
     1258       In former case callback will be NULL. 
     1259       In latter case pending_js_saves will be greater than zero. */ 
     1260    ASSERT(supervisor_ptr->save_callback == callback); 
     1261    ASSERT(supervisor_ptr->save_callback_context = context); 
    12471262    callback(context, success); 
     1263    supervisor_ptr->save_callback = NULL; 
     1264    supervisor_ptr->save_callback_context = NULL; 
    12481265  } 
    12491266}