From 9601ddacaddfd233c630283adb0eba05ccfbe1da Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 8 Nov 2014 19:23:02 +0000 Subject: Add new libs file to centrally open/close required libraries, and move a couple of the existing manual opens to it. --- amiga/Makefile.target | 2 +- amiga/gui.c | 25 ++++--------------------- amiga/libs.c | 41 +++++++++++++++++++++++++++++++++++++++++ amiga/libs.h | 29 +++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 22 deletions(-) create mode 100644 amiga/libs.c create mode 100644 amiga/libs.h (limited to 'amiga') diff --git a/amiga/Makefile.target b/amiga/Makefile.target index 12b0e05eb..bb8b8173d 100644 --- a/amiga/Makefile.target +++ b/amiga/Makefile.target @@ -69,7 +69,7 @@ S_AMIGA := gui.c tree.c history.c hotlist.c schedule.c file.c \ plotters.c object.c menu.c save_pdf.c arexx.c version.c \ cookies.c context_menu.c clipboard.c help.c font_scan.c \ launch.c search.c history_local.c download.c iff_dr2d.c \ - sslcert.c gui_options.c print.c theme.c drag.c icon.c \ + sslcert.c gui_options.c print.c theme.c drag.c icon.c libs.c \ datatypes.c dt_picture.c dt_anim.c dt_sound.c plugin_hack.c \ stringview/stringview.c stringview/urlhistory.c \ agclass/amigaguide_class.c diff --git a/amiga/gui.c b/amiga/gui.c index 231bcb3e4..6af9f31cf 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -167,11 +167,6 @@ struct ami_gui_tb_userdata { }; struct MsgPort *appport; -struct Library *KeymapBase = NULL; -struct KeymapIFace *IKeymap = NULL; -struct Library *ApplicationBase=NULL; -struct ApplicationIFace *IApplication=NULL; - Class *urlStringClass; BOOL locked_screen = FALSE; @@ -408,16 +403,6 @@ bool ami_locate_resource(char *fullpath, const char *file) static void ami_open_resources(void) { - /* Allocate ports/ASL and open libraries and devices */ - - if((KeymapBase = OpenLibrary("keymap.library",37))) { - IKeymap = (struct KeymapIFace *)GetInterface(KeymapBase,"main",1,NULL); - } - - if((ApplicationBase = OpenLibrary("application.library", 53))) { - IApplication = (struct ApplicationIFace *)GetInterface(ApplicationBase, "application", 2, NULL); - } - urlStringClass = MakeStringClass(); if(!(appport = AllocSysObjectTags(ASOT_PORT, @@ -2985,12 +2970,6 @@ static void gui_quit(void) ami_openurl_close(); FreeStringClass(urlStringClass); - if(IApplication) DropInterface((struct Interface *)IApplication); - if(ApplicationBase) CloseLibrary(ApplicationBase); - - if(IKeymap) DropInterface((struct Interface *)IKeymap); - if(KeymapBase) CloseLibrary(KeymapBase); - LOG(("Freeing scheduler")); ami_schedule_free(); ami_schedule_close_timer(); @@ -3001,6 +2980,8 @@ static void gui_quit(void) FreeVec(current_user_dir); FreeVec(current_user_faviconcache); FreeVec(current_user); + + ami_libs_close(); } char *ami_gui_get_cache_favicon_name(nsurl *url, bool only_if_avail) @@ -5271,6 +5252,8 @@ int main(int argc, char** argv) /* Open splash window */ Object *splash_window = ami_gui_splash_open(); + ami_libs_open(); + /* Open popupmenu.library just to check the version. * Versions older than 53.11 are dangerous, so we * forcibly disable context menus if these are in use. diff --git a/amiga/libs.c b/amiga/libs.c new file mode 100644 index 000000000..0330e664d --- /dev/null +++ b/amiga/libs.c @@ -0,0 +1,41 @@ +/* + * Copyright 2014 Chris Young + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "libs.h" + +void ami_libs_open(void) +{ + if((KeymapBase = OpenLibrary("keymap.library",37))) { + IKeymap = (struct KeymapIFace *)GetInterface(KeymapBase, "main", 1, NULL); + } + + if((ApplicationBase = OpenLibrary("application.library", 53))) { + IApplication = (struct ApplicationIFace *)GetInterface(ApplicationBase, "application", 2, NULL); + } +} + +void ami_libs_close(void) +{ + + if(IApplication) DropInterface((struct Interface *)IApplication); + if(ApplicationBase) CloseLibrary(ApplicationBase); + + if(IKeymap) DropInterface((struct Interface *)IKeymap); + if(KeymapBase) CloseLibrary(KeymapBase); +} + diff --git a/amiga/libs.h b/amiga/libs.h new file mode 100644 index 000000000..14cb9fd1e --- /dev/null +++ b/amiga/libs.h @@ -0,0 +1,29 @@ +/* + * Copyright 2014 Chris Young + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef AMIGA_LIBS_H + +struct Library *KeymapBase = NULL; +struct KeymapIFace *IKeymap = NULL; +struct Library *ApplicationBase = NULL; +struct ApplicationIFace *IApplication = NULL; + +void ami_libs_open(void); +void ami_libs_close(void); +#endif + -- cgit v1.2.3