]> Pileus Git - grits/commitdiff
Fix various win32 runtime issues
authorAndy Spencer <andy753421@gmail.com>
Wed, 11 Nov 2009 06:59:24 +0000 (06:59 +0000)
committerAndy Spencer <andy753421@gmail.com>
Wed, 11 Nov 2009 07:01:36 +0000 (07:01 +0000)
* Add -no-undefined so mingw-ld will generate dlls

* Make gis_test static so we don't have double copies if the plugins
  when they're loaded.

* Add gdk_threads_enter to opengl_start (to match opengl_end)

* Various debugging messages

src/.gitignore
src/Makefile.am
src/gis-opengl.c
src/gis-plugin.c
src/gis-wms.c
src/gis_test.c
src/plugins/Makefile.am
src/plugins/bmng.c

index 40465d3beef06b86ae3018084fce55bb24e23961..8601addab5cb9e97ad7ec1a92140b344a4c8834b 100644 (file)
@@ -1,3 +1,4 @@
+*.exe
 *.la
 *.lo
 *.o
 *.la
 *.lo
 *.o
index 70ebf3c8c05e5630e291d4fd4e238e5b6b8181bc..d82df9dc4b5dfea1e4a82719628df022d6003c95 100644 (file)
@@ -1,6 +1,6 @@
 SUBDIRS = . plugins
 
 SUBDIRS = . plugins
 
-AM_CFLAGS   = -Wall --std=gnu99 
+AM_CFLAGS   = -Wall --std=gnu99
 AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
 AM_LDADD    = $(GLIB_LIBS) $(GTK_LIBS) $(SOUP_LIBS)
 
 AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
 AM_LDADD    = $(GLIB_LIBS) $(GTK_LIBS) $(SOUP_LIBS)
 
@@ -35,6 +35,7 @@ libgis_la_SOURCES = \
 libgis_la_CPPFLAGS = $(AM_CPPFLAGS) \
        -DPKGDATADIR="\"$(datadir)/gis\"" -DPLUGINSDIR="\"$(libdir)/gis\""
 libgis_la_LIBADD = $(AM_LDADD)
 libgis_la_CPPFLAGS = $(AM_CPPFLAGS) \
        -DPKGDATADIR="\"$(datadir)/gis\"" -DPLUGINSDIR="\"$(libdir)/gis\""
 libgis_la_LIBADD = $(AM_LDADD)
+libgis_la_LDFLAGS = -no-undefined
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libgis.pc
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libgis.pc
@@ -43,7 +44,6 @@ pkgconfig_DATA = libgis.pc
 bin_PROGRAMS = gis_test wms_test
 
 gis_test_SOURCES  = gis_test.c gis.h
 bin_PROGRAMS = gis_test wms_test
 
 gis_test_SOURCES  = gis_test.c gis.h
-gis_test_LDFLAGS  = -static
 gis_test_LDADD    = $(AM_LDADD) libgis.la
 
 wms_test_SOURCES  = wms_test.c gis-world.c gis-world.h gis-wms.c gis-wms.h gis-tile.c gis-tile.h
 gis_test_LDADD    = $(AM_LDADD) libgis.la
 
 wms_test_SOURCES  = wms_test.c gis-world.c gis-world.h gis-wms.c gis-wms.h gis-tile.c gis-tile.h
index c1d48ace1b691802c56482b2428aa11332c42a68..866eac8c15f67e6dc7ec89a557c11ee8e645ff27 100644 (file)
@@ -399,6 +399,8 @@ void gis_opengl_begin(GisOpenGL *self)
 {
        g_assert(GIS_IS_OPENGL(self));
 
 {
        g_assert(GIS_IS_OPENGL(self));
 
+       gdk_threads_enter();
+
        GdkGLContext   *glcontext  = gtk_widget_get_gl_context(GTK_WIDGET(self));
        GdkGLDrawable  *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
 
        GdkGLContext   *glcontext  = gtk_widget_get_gl_context(GTK_WIDGET(self));
        GdkGLDrawable  *gldrawable = gtk_widget_get_gl_drawable(GTK_WIDGET(self));
 
index eb162b7c861df7a6ff6eebff77d1914bdba1712f..57ad922427582cdab19e52235148e83eba53f421 100644 (file)
@@ -123,16 +123,18 @@ GisPlugin *gis_plugins_load(GisPlugins *self, const char *name,
 {
        g_debug("GisPlugins: load %s", name);
        gchar *path = g_strdup_printf("%s/%s.%s", self->dir, name, G_MODULE_SUFFIX);
 {
        g_debug("GisPlugins: load %s", name);
        gchar *path = g_strdup_printf("%s/%s.%s", self->dir, name, G_MODULE_SUFFIX);
+       g_debug("GisPlugins: load - trying %s", path);
        if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
                g_free(path);
                path = g_strdup_printf("%s/%s.%s", PLUGINSDIR, name, G_MODULE_SUFFIX);
        }
        if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
                g_free(path);
                path = g_strdup_printf("%s/%s.%s", PLUGINSDIR, name, G_MODULE_SUFFIX);
        }
+       g_debug("GisPlugins: load - trying %s", path);
        if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
                g_warning("Module %s not found", name);
                g_free(path);
                return NULL;
        }
        if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
                g_warning("Module %s not found", name);
                g_free(path);
                return NULL;
        }
-       GModule *module = g_module_open(path, 0);
+       GModule *module = g_module_open(path, G_MODULE_BIND_LAZY);
        g_free(path);
        if (module == NULL) {
                g_warning("Unable to load module %s: %s", name, g_module_error());
        g_free(path);
        if (module == NULL) {
                g_warning("Unable to load module %s: %s", name, g_module_error());
index bd4704ddc4322f1b842db670318c7f4465980f9f..d2e0766966c14fefae031f55ba413fd3ec728bbc 100644 (file)
@@ -75,8 +75,10 @@ static gchar *_make_uri(GisWms *wms, GisTile *tile)
 void gis_wms_soup_chunk_cb(SoupMessage *message, SoupBuffer *chunk, gpointer _file)
 {
        FILE *file = _file;
 void gis_wms_soup_chunk_cb(SoupMessage *message, SoupBuffer *chunk, gpointer _file)
 {
        FILE *file = _file;
-       if (!SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
+       if (!SOUP_STATUS_IS_SUCCESSFUL(message->status_code)) {
+               g_warning("GisWms: soup_chunk_cb - soup failed with %d", message->status_code);
                return;
                return;
+       }
        goffset total = soup_message_headers_get_content_length(message->response_headers);
        if (fwrite(chunk->data, chunk->length, 1, file) != 1)
                g_warning("GisWms: soup_chunk_cb - eror writing data");
        goffset total = soup_message_headers_get_content_length(message->response_headers);
        if (fwrite(chunk->data, chunk->length, 1, file) != 1)
                g_warning("GisWms: soup_chunk_cb - eror writing data");
@@ -104,10 +106,13 @@ char *gis_wms_make_local(GisWms *self, GisTile *tile)
 
        /* Download file */
        gchar *uri = _make_uri(self, tile);
 
        /* Download file */
        gchar *uri = _make_uri(self, tile);
+       g_debug("GisWms: make_local - fetching %s", uri);
        SoupMessage *message = soup_message_new("GET", uri);
        g_signal_connect(message, "got-chunk", G_CALLBACK(gis_wms_soup_chunk_cb), file);
        soup_message_headers_set_range(message->request_headers, ftell(file), -1);
        int status = soup_session_send_message(self->soup, message);
        SoupMessage *message = soup_message_new("GET", uri);
        g_signal_connect(message, "got-chunk", G_CALLBACK(gis_wms_soup_chunk_cb), file);
        soup_message_headers_set_range(message->request_headers, ftell(file), -1);
        int status = soup_session_send_message(self->soup, message);
+       if (!SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
+               g_warning("GisWms: make_local - soup failed with %d", message->status_code);
        g_free(uri);
 
        /* Clean up */
        g_free(uri);
 
        /* Clean up */
index efd9218d0f3613f8ae05774315ff9b01d0fd83db..32bed7b3990639e804c5bfa9d19a0c19e22fa770 100644 (file)
@@ -60,7 +60,7 @@ int main(int argc, char **argv)
        gdk_threads_leave();
 
        gis_plugins_load(plugins, "bmng", world, view, opengl, prefs);
        gdk_threads_leave();
 
        gis_plugins_load(plugins, "bmng", world, view, opengl, prefs);
-       gis_plugins_load(plugins, "srtm", world, view, opengl, prefs);
+       //gis_plugins_load(plugins, "srtm", world, view, opengl, prefs);
 
        gis_view_set_site(view, "KLSX");
 
 
        gis_view_set_site(view, "KLSX");
 
index 2c5e2f906ae4bc9a9c6648de1d46836e656f25e8..e97bf6f89964a7c5a1899af5d734f9c5cfb0cfd0 100644 (file)
@@ -2,7 +2,7 @@ MAINTAINERCLEANFILES = Makefile.in
 
 AM_CFLAGS   = -Wall --std=gnu99  -I../
 AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
 
 AM_CFLAGS   = -Wall --std=gnu99  -I../
 AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
-AM_LDFLAGS  = -module -avoid-version
+AM_LDFLAGS  = -module -avoid-version -no-undefined
 LIBS        = $(top_srcdir)/src/libgis.la
 
 pluginsdir  = "$(libdir)/gis"
 LIBS        = $(top_srcdir)/src/libgis.la
 
 pluginsdir  = "$(libdir)/gis"
index 8404f5e9153c29d0789b3da04a520ccfe59c026a..5f29aa0a286825355e0a9298b4e1ab138c026693 100644 (file)
@@ -77,6 +77,8 @@ static void _load_tile(GisTile *tile, gpointer _self)
        data->self   = self;
        data->tile   = tile;
        data->pixbuf = gdk_pixbuf_new_from_file(path, NULL);
        data->self   = self;
        data->tile   = tile;
        data->pixbuf = gdk_pixbuf_new_from_file(path, NULL);
+       if (!data->pixbuf)
+               g_warning("GisPluginBmng: _load_tile - Error loading pixbuf %s", path);
        g_free(path);
        g_idle_add_full(G_PRIORITY_LOW, _load_tile_cb, data, NULL);
        g_debug("GisPluginBmng: _load_tile end %p", g_thread_self());
        g_free(path);
        g_idle_add_full(G_PRIORITY_LOW, _load_tile_cb, data, NULL);
        g_debug("GisPluginBmng: _load_tile end %p", g_thread_self());