From: Mario B. <st...@gm...> - 2007-02-13 20:29:00
|
Hi folks, This message is intended for developpers, preferably those who successfully built OpenEV2 (I hope there are some!)... but all opinions are welcome. There is a serious problem in OpenEV2 with GvData instances not being destr= oyed when removed from the view. Here is a comparison between EV1 and EV2, tests made with CPL_DEBUG=3DON using a simple script (see link and explanations b= elow): =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D OpenEV1: (opened polys.shp) OpenEV: gv_shapes_new(0x823c948) OpenEV: GvShapesLayer: 8 in display list, 0 not. gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x823c948/polys.shp GvShapesLayer 0x823cb40/polys.shp (removed polys.shp) OpenEV: gv_shapes_layer_destroy(polys.shp) OpenEV: gv_shapes_finalize(polys.shp/0x823c948) OpenEV: gv_shapes_layer_finalize(polys.shp) (opened points.shp) OpenEV: gv_shapes_new(0x8225750) gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x8225750/points.shp GvShapesLayer 0x8240d08/points.shp (removed points.shp) OpenEV: gv_shapes_layer_destroy(points.shp) OpenEV: gv_shapes_finalize(points.shp/0x8225750) OpenEV: gv_shapes_layer_finalize(points.shp) (opened image.tif) GDAL: GDALOpen(image.tif) succeeds as GTiff. gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvRaster 0x827ffc0/image.tif:1 GvRasterLayer 0x8235238/image.tif:1 GvMesh 0x8235400/(null) (removed image.tif) OpenEV: gv_raster_layer_destroy(image.tif:1) OpenEV: gv_mesh_finalize((null)) OpenEV: gv_raster_finalize(image.tif:1) GDAL: GDALClose(image.tif) OpenEV: gv_raster_layer_finalize(image.tif:1) (closing) OpenEV: gv_view_area_destroy (I don=B4t think this is related but what does this mean?!?) (if closed without adding layers, we get gv_view_area_finalize instead) Gdk-ERROR **: BadValue (integer parameter out of range for operation) serial 7556 error_code 2 request_code 144 minor_code 9 OpenEV2: (without a call to layer.destroy) (opened polys.shp) OpenEV: gv_shapes_new(0x83b5500) OpenEV: GvShapesLayer: 8 in display list, 0 not. gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x83b5500/polys.shp GvShapesLayer 0x83bf340/polys.shp (removed polys.shp, nothing happens) (opened points.shp) OpenEV: gv_shapes_new(0x841ef50) gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x83b5500/polys.shp GvShapesLayer 0x83bf340/polys.shp GvShapes 0x841ef50/points.shp GvShapesLayer 0x841d3a0/points.shp (removed points.shp, nothing happens) (opened image.tif) GDAL: GDALOpen(image.tif) succeeds as GTiff. gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x83b5500/polys.shp GvShapesLayer 0x83bf340/polys.shp GvShapes 0x841ef50/points.shp GvShapesLayer 0x841d3a0/points.shp GvRaster 0x8422548/image.tif:1 GvRasterLayer 0x8422218/image.tif:1 GvMesh 0x8425c10/(null) (closing) Vertex3f: 1 OpenEV: gv_view_area_destroy OpenEV: gv_shapes_layer_destroy(polys.shp) OpenEV: gv_shapes_layer_finalize(polys.shp) OpenEV: gv_shapes_layer_destroy(points.shp) OpenEV: gv_shapes_layer_finalize(points.shp) OpenEV: gv_raster_layer_destroy(image.tif:1) OpenEV: gv_mesh_finalize((null)) OpenEV: gv_raster_layer_finalize(image.tif:1) (note, no gv_view_area_finalize) (with a call to layer.destroy) (opened polys.shp) OpenEV: gv_shapes_new(0x83b6f70) OpenEV: GvShapesLayer: 8 in display list, 0 not. gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x83b6f70/polys.shp GvShapesLayer 0x83bfd08/polys.shp (removed polys.shp) OpenEV: gv_shapes_layer_destroy(polys.shp) (opened points.shp) OpenEV: gv_shapes_new(0x841ebd8) gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x83b6f70/polys.shp GvShapesLayer 0x83bfd08/polys.shp GvShapes 0x841ebd8/points.shp GvShapesLayer 0x841e8a0/points.shp (removed points.shp) OpenEV: gv_shapes_layer_destroy(points.shp) (opened image.tif) GDAL: GDALOpen(image.tif) succeeds as GTiff. gv_data registry dump =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D GvShapes 0x83b6f70/polys.shp GvShapesLayer 0x83bfd08/polys.shp GvShapes 0x841ebd8/points.shp GvShapesLayer 0x841e8a0/points.shp GvRaster 0x8421f90/image.tif:1 GvRasterLayer 0x8422578/image.tif:1 GvMesh 0x8425d38/(null) (removed image.tif) OpenEV: gv_raster_layer_destroy(image.tif:1) OpenEV: gv_mesh_finalize((null)) (closing) Vertex3f: 1 <--- this is another problem, btw... OpenEV: gv_view_area_destroy OpenEV: gv_shapes_destroy(polys.shp/0x83b6f70) OpenEV: gv_shapes_finalize(polys.shp/0x83b6f70) OpenEV: gv_shapes_layer_destroy(polys.shp) OpenEV: gv_shapes_layer_finalize(polys.shp) OpenEV: gv_shapes_destroy(points.shp/0x841ebd8) OpenEV: gv_shapes_finalize(points.shp/0x841ebd8) OpenEV: gv_shapes_layer_destroy(points.shp) OpenEV: gv_shapes_layer_finalize(points.shp) OpenEV: gv_raster_layer_destroy(image.tif:1) OpenEV: gv_raster_layer_finalize(image.tif:1) (no gv_view_area_finalize again) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D So it is obvious that something is wrong in OpenEV2, most likely in the gv = lib because nothing I tried at the Python level worked... and this is causing a= ll kinds of problems in CIETmap2. This bug (and the polys bug, which I will describe in another post) are cri= tical enough to compromise any OpenEV2/CIETmap2 release. So if anyone wants to have a crack at it, I sure would appreciate the help.= .. Here is the script for testing: http://openev.svn.sourceforge.net/viewvc/openev/trunk/src/pymod/mini-view.p= y?revision=3D22&view=3Dmarkup It can be used for both OpenEV versions. To use it for OpenEV2, launch it from the pymod dir. For OpenEV1, put it in the pymod dir and run python mini-view.py 1.2 (or 1.= 3). Thanks! cheers --=20 Mario B. |