diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2014-01-10 20:46:58 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2014-01-10 20:46:58 +0000 |
commit | a856439afb743c7fa16f51108862b99a1f56c82a (patch) | |
tree | 4408759e4607c8f34bbf56cf262fb2340a82458f | |
parent | 78e8077a5a81bbb032146d11f052e30090e552fd (diff) | |
download | netsurf-a856439afb743c7fa16f51108862b99a1f56c82a.tar.gz netsurf-a856439afb743c7fa16f51108862b99a1f56c82a.tar.bz2 |
Re-add proper notification of ability to close public screen.
-rw-r--r-- | amiga/gui.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 6e5e38f08..3140bb61e 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -160,6 +160,7 @@ Class *urlStringClass; BOOL locked_screen = FALSE; BOOL screen_closed = FALSE; +ULONG screen_signal = -1; struct MsgPort *applibport = NULL; ULONG applibsig = 0; BOOL refresh_search_ico = FALSE; @@ -401,6 +402,7 @@ void ami_open_resources(void) ami_file_req_init(); ami_help_init(NULL); + screen_signal = AllocSignal(-1); /* for screen closure notification */ } static UWORD ami_system_colour_scrollbar_fgpen(struct DrawInfo *drinfo) @@ -730,6 +732,7 @@ void ami_openscreen(void) SA_PubName, "NetSurf", SA_LikeWorkbench, TRUE, SA_Compositing, compositing, + SA_PubSig, screen_signal, TAG_DONE); if(scrn) @@ -2734,15 +2737,16 @@ void ami_quit_netsurf_delayed(void) void ami_gui_close_screen(struct Screen *scrn, BOOL locked_screen) { + ULONG scrnsig = 1 << screen_signal; + if(scrn == NULL) return; if(CloseScreen(scrn)) return; if(locked_screen == TRUE) return; /* If this is our own screen, wait for visitor windows to close */ LOG(("Waiting for visitor windows to close...")); - do { - Delay(50); - } while (CloseScreen(scrn) == FALSE); + Wait(scrnsig); + CloseScreen(scrn); } void gui_quit(void) @@ -2769,6 +2773,7 @@ void gui_quit(void) LOG(("Closing screen")); ami_gui_close_screen(scrn, locked_screen); FreeVec(nsscreentitle); + FreeSignal(screen_signal); LOG(("Freeing menu items")); ami_context_menu_free(); |