summaryrefslogtreecommitdiff
path: root/amiga/gui.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2014-11-22 16:24:26 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2014-11-22 16:27:39 +0000
commit2de1553a002aff7fa89bb466cdba1b3414413901 (patch)
tree2ad599d6f20e8280036b6d464d070fdeb1359071 /amiga/gui.c
parentf8d8d218d8d5f7fdeb2edc0c5fa3f0a22e6d5a1b (diff)
downloadnetsurf-2de1553a002aff7fa89bb466cdba1b3414413901.tar.gz
netsurf-2de1553a002aff7fa89bb466cdba1b3414413901.tar.bz2
New scheduler
Diffstat (limited to 'amiga/gui.c')
-rw-r--r--amiga/gui.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index 0f5210179..461a20dab 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -167,6 +167,7 @@ struct ami_gui_tb_userdata {
int items;
};
+static struct MsgPort *schedulermsgport = NULL;
static struct MsgPort *appport;
static Class *urlStringClass;
@@ -416,7 +417,9 @@ static bool ami_open_resources(void)
ASO_NoTrack, FALSE,
TAG_DONE))) return false;
- ami_file_req_init();
+ if(!(schedulermsgport = AllocSysObjectTags(ASOT_PORT,
+ ASO_NoTrack, FALSE,
+ TAG_DONE))) return false;
return true;
}
@@ -2689,7 +2692,7 @@ void ami_get_msg(void)
{
ULONG winsignal = 1L << sport->mp_SigBit;
ULONG appsig = 1L << appport->mp_SigBit;
- ULONG schedulesig = 1L << schedulermsgport->mp_SigBit; /* \todo create schedulermsgport */
+ ULONG schedulesig = 1L << schedulermsgport->mp_SigBit;
ULONG ctrlcsig = SIGBREAKF_CTRL_C;
uint32 signal = 0;
fd_set read_fd_set, write_fd_set, except_fd_set;
@@ -2741,11 +2744,8 @@ void ami_get_msg(void)
ami_print_cont();
}
- if(signal & schedulesig) { /* \todo rewrite */
- while((timermsg = (struct TimerRequest *)GetMsg(msgport))) {
- ReplyMsg((struct Message *)timermsg);
- schedule_run();
- }
+ if(signal & schedulesig) {
+ ami_schedule_handle(schedulermsgport);
}
if(signal & helpsignal)
@@ -2993,17 +2993,17 @@ static void gui_quit(void)
ami_mouse_pointers_free();
LOG(("Freeing clipboard"));
ami_clipboard_free();
+ LOG(("Removing scheduler process"));
+ ami_scheduler_process_delete();
- FreeSysObject(ASOT_PORT,appport);
- FreeSysObject(ASOT_PORT,sport);
+ FreeSysObject(ASOT_PORT, appport);
+ FreeSysObject(ASOT_PORT, sport);
+ FreeSysObject(ASOT_PORT, schedulermsgport);
ami_file_req_free();
ami_openurl_close();
FreeStringClass(urlStringClass);
- LOG(("Freeing scheduler"));
- ami_schedule_free();
-
FreeObjList(window_list);
FreeVec(current_user_options);
@@ -5347,6 +5347,16 @@ int main(int argc, char** argv)
CloseLibrary(PopupMenuBase);
}
+ if (ami_open_resources() == false) { /* alloc message ports */
+ ami_misc_fatal_error("Unable to allocate resources");
+ return RETURN_FAIL;
+ }
+
+ if(ami_scheduler_process_create(schedulermsgport) != NSERROR_OK) {
+ ami_misc_fatal_error("Failed to initialise scheduler");
+ return RETURN_FAIL;
+ }
+
user = GetVar("user", temp, 1024, GVF_GLOBAL_ONLY);
current_user = ASPrintf("%s", (user == -1) ? "Default" : temp);
current_user_dir = ASPrintf("PROGDIR:Users/%s", current_user);
@@ -5364,11 +5374,6 @@ int main(int argc, char** argv)
ami_mime_init("PROGDIR:Resources/mimetypes");
sprintf(temp, "%s/mimetypes.user", current_user_dir);
ami_mime_init(temp);
- if(ami_schedule_create() == false) {
- ami_misc_fatal_error("Failed to initialise scheduler");
- return RETURN_FAIL;
- }
-
amiga_plugin_hack_init();
ret = amiga_datatypes_init();
@@ -5395,11 +5400,6 @@ int main(int argc, char** argv)
if(current_user_cache != NULL) FreeVec(current_user_cache);
ret = amiga_icon_init();
- if (ami_open_resources() == false) { /* alloc ports/asl reqs, open libraries/devices */
- ami_misc_fatal_error("Unable to allocate resources");
- return RETURN_FAIL;
- }
-
search_web_init(nsoption_charp(search_engines_file));
ami_clipboard_init();
ami_openurl_open();
@@ -5409,6 +5409,7 @@ int main(int argc, char** argv)
save_complete_init();
ami_theme_init();
ami_init_mouse_pointers();
+ ami_file_req_init();
win_destroyed = false;
ami_font_setdevicedpi(0); /* for early font requests, eg treeview init */