diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2014-02-10 18:42:50 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2014-02-10 18:42:50 +0000 |
commit | 36e0715dfb5411a9719f3ca4a032a6d75c267c36 (patch) | |
tree | a9a89619ede04623462de1ae52a6709839b13bec | |
parent | e1b5332192f85945e86ec5f581d4914b0c9601b0 (diff) | |
download | netsurf-36e0715dfb5411a9719f3ca4a032a6d75c267c36.tar.gz netsurf-36e0715dfb5411a9719f3ca4a032a6d75c267c36.tar.bz2 |
Get and process AmigaGuide help messages
-rw-r--r-- | amiga/gui.c | 18 | ||||
-rwxr-xr-x | amiga/help.c | 15 | ||||
-rwxr-xr-x | amiga/help.h | 3 |
3 files changed, 27 insertions, 9 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index d3b75744b..af0b06dd2 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -2556,8 +2556,9 @@ void ami_get_msg(void) struct TimerRequest *timermsg = NULL; struct MsgPort *printmsgport = ami_print_get_msgport(); ULONG printsig = 0; + ULONG helpsignal = ami_help_signal(); if(printmsgport) printsig = 1L << printmsgport->mp_SigBit; - ULONG signalmask = winsignal | appsig | schedulesig | rxsig | printsig | applibsig | ctrlcsig; + ULONG signalmask = winsignal | appsig | schedulesig | rxsig | printsig | applibsig | ctrlcsig | helpsignal; signal = Wait(signalmask); @@ -2573,25 +2574,23 @@ void ami_get_msg(void) if(signal & applibsig) ami_handle_applib(); - if(signal & printsig) - { + if(signal & printsig) { while(GetMsg(printmsgport)); //ReplyMsg ami_print_cont(); } - if(signal & schedulesig) - { - if(timermsg = (struct TimerRequest *)GetMsg(msgport)) - { + if(signal & schedulesig) { + if(timermsg = (struct TimerRequest *)GetMsg(msgport)) { ReplyMsg((struct Message *)timermsg); schedule_run(FALSE); } } + if(signal & helpsignal) + ami_help_process(); + if(signal & ctrlcsig) - { ami_quit_netsurf_delayed(); - } } static void ami_gui_fetch_callback(void *p) @@ -2778,6 +2777,7 @@ void ami_gui_close_screen(struct Screen *scrn, BOOL locked_screen) } FreeSignal(screen_signal); + screen_signal = -1; scrn = NULL; } diff --git a/amiga/help.c b/amiga/help.c index 24eaa7dc6..4e58bca89 100755 --- a/amiga/help.c +++ b/amiga/help.c @@ -66,3 +66,18 @@ void ami_help_new_screen(struct Screen *screen) if(AmigaGuideObject == NULL) return;
SetAttrs(AmigaGuideObject, AMIGAGUIDE_Screen, screen, TAG_DONE);
}
+
+ULONG ami_help_signal(void)
+{
+ ULONG ag_sig = 0;
+ if(AmigaGuideObject)
+ SetAttrs(AmigaGuideObject, AMIGAGUIDE_Signal, &ag_sig, TAG_DONE);
+ return ag_sig;
+}
+
+void ami_help_process(void)
+{
+ ULONG ret = IDoMethod(AmigaGuideObject, AGM_PROCESS, NULL);
+ printf("ret = %d\n", ret); // should be NULL if closed
+}
+
diff --git a/amiga/help.h b/amiga/help.h index ce3a462c6..e405edd0c 100755 --- a/amiga/help.h +++ b/amiga/help.h @@ -32,4 +32,7 @@ struct Screen; void ami_help_open(ULONG node, struct Screen *screen); void ami_help_free(void); void ami_help_new_screen(struct Screen *screen); +ULONG ami_help_signal(void); +void ami_help_process(void); #endif + |