@@ -123,14 +123,17 @@ private _endMessage = if (isNil "_message") then {if (_winSide == "") then {"Mis
123123
124124private _saveTag = if (! isNil " _tag" ) then {_tag } else {EGVAR(settings,saveTag)};
125125INFO_3(" Saving recording — mission: %1 | frames: %2 | tag: %3" ,GVAR(missionName),_endFrameNumber ,_saveTag );
126- private _saveStart = diag_tickTime;
127- [" :MISSION:SAVE:" , []] call EFUNC(extension,sendData);
128- INFO_2(" Recording saved — took %1 ms | mission: %2" ,round ((diag_tickTime - _saveStart ) * 1000 ),GVAR(missionName));
129- OCAPEXTLOG(ARR4(" Saved recording of mission" ,GVAR(missionName)," with tag" ,_saveTag ));
130126
127+ // Save is now asynchronous — the extension returns immediately and will fire
128+ // a :MISSION:SAVED: ExtensionCallback when the write + upload finishes.
129+ // The final success/failure notification is driven from that callback in
130+ // fnc_initSession.sqf.
131+ INFO_2(" Mission save queued — mission: %1 | frames: %2" ,GVAR(missionName),_endFrameNumber );
132+ [" :MISSION:SAVE:" , []] call EFUNC(extension,sendData);
133+ OCAPEXTLOG(ARR4(" Queued recording of mission" ,GVAR(missionName)," with tag" ,_saveTag ));
131134
132- // notify players that the recording was saved with a 2 second delay to ensure the "stopped recording" entries populate first
133- [format [" OCAP saved %1 frames successfully " , _endFrameNumber ], 1 , [1 , 1 , 1 , 1 ]] remoteExec [" CBA_fnc_notify" , [0 , - 2 ] select isDedicated];
135+ // Interim "saving..." toast; the final result comes from :MISSION:SAVED:
136+ [format [" OCAP saving %1 (%2 frames) — upload will follow " , briefingName , _endFrameNumber ], 1 , [1 , 1 , 1 , 1 ]] remoteExec [" CBA_fnc_notify" , [0 , - 2 ] select isDedicated];
134137[[GVAR(missionName), GVAR(captureFrameNo)], {
135138 params [" _missionName" , " _endFrame" ];
136139
0 commit comments