summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2014-11-08 19:23:02 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2014-11-09 00:06:55 +0000
commit9601ddacaddfd233c630283adb0eba05ccfbe1da (patch)
tree8ab72bca5f766c94f3f00440d16ebbea92dc1a22 /amiga
parent4c7ef8db3f75807644d61aca5211f3db4e967657 (diff)
downloadnetsurf-9601ddacaddfd233c630283adb0eba05ccfbe1da.tar.gz
netsurf-9601ddacaddfd233c630283adb0eba05ccfbe1da.tar.bz2
Add new libs file to centrally open/close required libraries, and move a couple of the existing manual opens to it.
Diffstat (limited to 'amiga')
-rw-r--r--amiga/Makefile.target2
-rw-r--r--amiga/gui.c25
-rw-r--r--amiga/libs.c41
-rw-r--r--amiga/libs.h29
4 files changed, 75 insertions, 22 deletions
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 <chris@unsatisfactorysoftware.co.uk>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <chris@unsatisfactorysoftware.co.uk>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#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
+