- TRACEMSG("launching %p:%s", CurrentProcess, CurrentProcess->monitor.name);
- CurrentProcess->leaving = true;
- setcontext(&CurrentProcess->context);
- /* not reached */
+ if (old_process != CurrentProcess)
+ {
+ TRACEMSG("switching from %p:%s to %p:%s",
+ old_process, old_process ? old_process->monitor.name : "-",
+ CurrentProcess, CurrentProcess->monitor.name);
+
+ if (old_process)
+ swapcontext(&old_process->context, &CurrentProcess->context);
+ else
+ setcontext(&CurrentProcess->context);
+
+ /* not reached */
+ }
+ TRACEMSG("keeping %p:%s", CurrentProcess, CurrentProcess->monitor.name);