summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2014-02-10 18:42:50 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2014-02-10 18:42:50 +0000
commit36e0715dfb5411a9719f3ca4a032a6d75c267c36 (patch)
treea9a89619ede04623462de1ae52a6709839b13bec /amiga
parente1b5332192f85945e86ec5f581d4914b0c9601b0 (diff)
downloadnetsurf-36e0715dfb5411a9719f3ca4a032a6d75c267c36.tar.gz
netsurf-36e0715dfb5411a9719f3ca4a032a6d75c267c36.tar.bz2
Get and process AmigaGuide help messages
Diffstat (limited to 'amiga')
-rw-r--r--amiga/gui.c18
-rwxr-xr-xamiga/help.c15
-rwxr-xr-xamiga/help.h3
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
+