Changeset 6df7809837f5abf82df57c6f8cc01f41b2837648
- 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:
-
Legend:
- Unmodified
- Added
- Removed
-
|
rf42b4fb
|
r6df7809
|
|
| 286 | 286 | strcmp(app_ptr->level, LADISH_APP_LEVEL_JACKSESSION) == 0 && |
| 287 | 287 | 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 */ |
| 289 | 290 | list_for_each(node_ptr, &supervisor_ptr->applist) |
| 290 | 291 | { |
| … |
… |
|
| 293 | 294 | app_ptr->js_commandline = NULL; |
| 294 | 295 | } |
| | 296 | success = false; |
| 295 | 297 | goto fail_rm_temp_dir; |
| 296 | 298 | } |
| … |
… |
|
| 724 | 726 | static void ladish_js_app_save_complete(void * context, const char * commandline) |
| 725 | 727 | { |
| 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); |
| 734 | 744 | } |
| 735 | 745 | |
| … |
… |
|
| 742 | 752 | } |
| 743 | 753 | |
| 744 | | log_info("Last JS app saved"); |
| | 754 | log_info("No more pending JS app saves"); |
| 745 | 755 | app_ptr->supervisor->pending_js_saves = 0; |
| 746 | 756 | |
| … |
… |
|
| 760 | 770 | { |
| 761 | 771 | 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 | } |
| 763 | 776 | } |
| 764 | 777 | else if (strcmp(app_ptr->level, LADISH_APP_LEVEL_1) == 0) |
| … |
… |
|
| 1174 | 1187 | bool success; |
| 1175 | 1188 | |
| | 1189 | ASSERT(callback != NULL); |
| | 1190 | |
| 1176 | 1191 | ASSERT(supervisor_ptr->js_temp_dir == NULL); |
| 1177 | 1192 | ASSERT(supervisor_ptr->pending_js_saves == 0); |
| … |
… |
|
| 1187 | 1202 | } |
| 1188 | 1203 | |
| | 1204 | supervisor_ptr->save_callback_context = context; |
| | 1205 | supervisor_ptr->save_callback = callback; |
| | 1206 | |
| 1189 | 1207 | if (supervisor_ptr->pending_js_saves > 0) |
| 1190 | 1208 | { |
| … |
… |
|
| 1204 | 1222 | |
| 1205 | 1223 | 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); |
| 1214 | 1224 | } |
| 1215 | 1225 | |
| … |
… |
|
| 1241 | 1251 | success = false; |
| 1242 | 1252 | exit: |
| 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); |
| 1247 | 1262 | callback(context, success); |
| | 1263 | supervisor_ptr->save_callback = NULL; |
| | 1264 | supervisor_ptr->save_callback_context = NULL; |
| 1248 | 1265 | } |
| 1249 | 1266 | } |