aboutsummaryrefslogtreecommitdiff
path: root/emcc.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2013-04-05 15:49:20 +0000
committerSimon Tatham <anakin@pobox.com>2013-04-05 15:49:20 +0000
commit8f87f2ce894f6ba017581abb89e2e0927067bed7 (patch)
treef5a2c1edaed00eeaec5d3093c1faf27365a177ac /emcc.c
parent841c9318f3bc8a368224af4931f2f007ff288b0a (diff)
downloadpuzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.zip
puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.tar.gz
puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.tar.bz2
puzzles-8f87f2ce894f6ba017581abb89e2e0927067bed7.tar.xz
I've just realised that the JS puzzles' permalinks were not updating
when the user pressed 'n' for a new game, because all the front end knows is that it passed a keystroke to the puzzle, and it has no way of hearing back that a particular keypress resulted in a game id change. To fix this, I've renamed midend_request_desc_changes to midend_request_id_changes and expanded its remit to cover _any_ change to the game ids. So now that callback in the Emscripten front end is the only place from which update_permalinks is called (apart from initialising them at setup time), and that should handle everything. [originally from svn r9805]
Diffstat (limited to 'emcc.c')
-rw-r--r--emcc.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/emcc.c b/emcc.c
index 7c436c1..9badcc9 100644
--- a/emcc.c
+++ b/emcc.c
@@ -313,10 +313,10 @@ static void update_permalinks(void)
}
/*
- * Callback from the midend if Mines supersedes its game description,
- * so we can update the permalinks.
+ * Callback from the midend when the game ids change, so we can update
+ * the permalinks.
*/
-static void desc_changed(void *ignored)
+static void ids_changed(void *ignored)
{
update_permalinks();
}
@@ -598,7 +598,6 @@ static void cfg_end(int use_results)
midend_new_game(me);
resize();
midend_redraw(me);
- update_permalinks();
free_cfg(cfg);
js_dialog_cleanup();
}
@@ -653,7 +652,6 @@ void command(int n)
*/
midend_set_params(me, presets[i]);
midend_new_game(me);
- update_permalinks();
resize();
midend_redraw(me);
update_undo_redo();
@@ -802,11 +800,11 @@ int main(int argc, char **argv)
}
/*
- * Request notification if a puzzle (hopefully only ever Mines)
- * supersedes its game description, so that we can proactively
- * update the permalink.
+ * Request notification when the game ids change (e.g. if the user
+ * presses 'n', and also when Mines supersedes its game
+ * description), so that we can proactively update the permalink.
*/
- midend_request_desc_changes(me, desc_changed, NULL);
+ midend_request_id_changes(me, ids_changed, NULL);
/*
* Draw the puzzle's initial state, and set up the permalinks and