mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-12 09:36:27 +00:00
Fix download and run race condition
This fixes a race condition where the hub program running status flag is received before the last checksum from the download process. Issue: https://github.com/pybricks/support/issues/290
This commit is contained in:
+8
-5
@@ -62,12 +62,15 @@ const runtime: Reducer<HubRuntimeState, Action> = (
|
||||
return state;
|
||||
}
|
||||
case BlePybricksServiceEventActionType.StatusReport:
|
||||
if (action.statusFlags & statusToFlag(Status.UserProgramRunning)) {
|
||||
return HubRuntimeState.Running;
|
||||
}
|
||||
// TODO: Status report flags should probably separated from hub runtime state.
|
||||
// TODO: Status report flags need to be separated from hub runtime state.
|
||||
// For now, we have this hack to ensure status updates don't interfere with
|
||||
// download and run
|
||||
// download and run. Loading state should really be actions like didStartLoading,
|
||||
// didLoad and didFailToLoad.
|
||||
if (state !== HubRuntimeState.Loading) {
|
||||
if (action.statusFlags & statusToFlag(Status.UserProgramRunning)) {
|
||||
return HubRuntimeState.Running;
|
||||
}
|
||||
}
|
||||
if (state !== HubRuntimeState.Loading && state !== HubRuntimeState.Loaded) {
|
||||
return HubRuntimeState.Idle;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user