「view this page in B3 βῆτα server」

Revisions №624

branch: interactive/develop 「№624」
Commited by: Rocco Moretti
GitHub commit link: 「d7a834818f06ce44」 「№6537」
Difference from previous tested commit:  code diff
Commit date: 2024-06-18 19:12:11
foldit.build.debug foldit.build.release foldit.defines foldit.levels foldit.unit.debug foldit.unit.release

Merge pull request #6537 from RosettaCommons/roccmoretti/network_popup [Foldit] Add loading/progress dialog popup for puzzle and solution loading Automated timeouts seem to be an issue for some players. Instead of playing guess-and-check with the timeout thresholds (which were getting to be long from a UI perspective anyway), create a dialog box which allows users to cancel the download if the server is stalled. The central clock is animated, to allow players to see that the Foldit client hasn't frozen. The clock will bounce left and right as data is received from the server, which allows players to know if something is happening, or if the server might be stuck. The cancel button will cancel the data transfer, returning the user to what they were doing before. Puzzle download, solution download and solution upload (the actions which we have players complaining about devprev on) have been converted to use the new popup dialog. Since the user has control over transfer cancellation, if we have a progress callback (i.e. we have a dialog box up), we don't have a timeout -- Foldit will sit at the dialog box until the transfer succeeds, gets a failure code from the server, or the user presses cancel. One of the complications is that we can't be holding the GUI mutex while we're waiting for the download to complete. This would keep the dialog box from displaying and updating. The big complication here is that GUI button response callbacks have the GUI mutex held early on in the response chain. So we need to break out the download management into a separate thread. We also need to update the Curl library calls to use a slightly different interface, to allow us to poll for cancellation during the transfer. (Otherwise the download will block until some sort of transfer happens.) There's also some code to make server thread error handling more robust, as well as soft crash timeouts in automated solution uploading (so we can monitor for issues).

Test: mac.clang.foldit.build.release

 View log


 View log in dialog  View log in log in separate window