[gdal-dev] GDALDestroyDriverManager() and static driver pointers

Paul Selormey paul at t...
Wed Sep 4 04:44:03 EDT 2002


Hello Frank,
Thanks so much for the fix and the update. I also wished the static global
driver manager is actually managed by the user.

static GDALDriverManager *poDM = NULL;

Something like

GDALDriverManger gdalDriverMager;

GDALStartup(&gdalDriverMager, ...);

.....use it

GDALShutdown(&gdalDriverMager, ...);

However, after looking a bit at the sources, it seems this will affect the
current
framework. I could then have the GDALDriverManager as member of a class
in an application :-)

I have many wishes, but you know they are not horses :-) I also wished the
various drivers were implemented as share library (dll for Windows). That
way,
I could simply take GeoTiff, if that is all that I want in an application.
In fact, if
there is no need to use GDAL to access a GeoTiff file, I could also use the
share
library directly.

Again, thanks so much.

Best regards,
Paul.


----- Original Message -----
From: "Frank Warmerdam" <warmerdam at p...>
To: "gdal-dev" <gdal-dev at yahoogroups.com>
Sent: Wednesday, September 04, 2002 4:04 PM
Subject: [gdal-dev] GDALDestroyDriverManager() and static driver pointers


>
> Folks,
>
> I have implemented GDALDestroyDriverManager() in response to the request
> for a way to
> cleanup loaded drivers. However, to make it work smoothly, such that
> drivers can be reloaded
> properly with a GDALAllRegister() call after destroying the driver
> manager, it is important that
> we no longer maintain static driver pointers within out driver
> implementations.
>
> In the past each driver maintained a static pointer to its GDALDriver
> instance. The problem
> with this is that this doesn't get "NULLed" when the driver is
> destroyed. So, to fix do the
> following steps to any drivers not in CVS (I have fixed all these):
>
> o Remove the static pointer.
> o Remove any initialization of the poDriver pointer in the GDALDataset.
> This will be taken
> care of by GDALOpen().
> o Change your register function to check if the driver is already
> loaded by calling
> GDALGetDriverByName().
>
> Best regards,
>
> --
> ---------------------------------------+----------------------------------
----
> I set the clouds in motion - turn up | Frank Warmerdam,
warmerdam at p...
> light and sound - activate the windows | http://pobox.com/~warmerdam
> and watch the world go round - Rush | Geospatial Programmer for Rent
>
>
>
>
>
>
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
>
>





More information about the Gdal-dev mailing list