Linux/GTK Cairo versioning issues
---------------------------------

         Key: UDIG-692
         URL: http://jira.codehaus.org/browse/UDIG-692
     Project: uDIG
        Type: Bug

  Components: map  
    Versions: UDIG 1.1.M4    
 Environment: Linux/GTK >= 2.8.3
    Reporter: Richard Gould
 Assigned to: Jesse Eichar 
    Priority: Critical
     Fix For: UDIG 1.1.M4


GTK+ >= 2.8.3 uses Cairo 1.0 (libcairo.so.2), but SWT 3.1 uses Cairo 0.4 
(libcairo.so.1)

If libcairo.so.1 is present in jre/lib/i386 then uDig crashes with error
"java: cairo-surface.c:273: cairo_surface_reference: Assertion 
`surface->ref_count > 0' failed."

Usually because cairo 1.0 is already loaded. If it is already loaded, SWT 
cannot resolve it and throws:

!ENTRY net.refractions.udig.project.ui 4 0 2006-02-28 13:27:36.955
!MESSAGE Unable to load graphics library [Cairo is required] 
(java.lang.UnsatisfiedLinkError: 
/home/rgould/dev/workspace-udig-trunk/.metadata/.plugins/org.eclipse.pde.core/udig.product/org.eclipse.osgi/bundles/208/1/.cp/libswt-cairo-gtk-3139.so:
 libcairo.so.1: cannot open shared object file: No such file or directory)
!STACK 0
org.eclipse.swt.SWTException: Unable to load graphics library [Cairo is 
required] (java.lang.UnsatisfiedLinkError: 
/home/rgould/dev/workspace-udig-trunk/.metadata/.plugins/org.eclipse.pde.core/udig.product/org.eclipse.osgi/bundles/208/1/.cp/libswt-cairo-gtk-3139.so:
 libcairo.so.1: cannot open shared object file: No such file or directory)
        at org.eclipse.swt.SWT.error(SWT.java:2942)
        at org.eclipse.swt.graphics.Device.checkCairo(Device.java:154)
        at org.eclipse.swt.graphics.Path.<init>(Path.java:64)
        at 
net.refractions.udig.ui.graphics.SWTGraphics.convertToPath(SWTGraphics.java:150)
        at 
net.refractions.udig.ui.graphics.SWTGraphics.draw(SWTGraphics.java:126)
        at net.refractions.udig.ui.Drawing.paint(Drawing.java:276)
        at net.refractions.udig.ui.Drawing.drawFeature(Drawing.java:216)
        at net.refractions.udig.ui.Drawing.drawFeature(Drawing.java:193)
        at net.refractions.udig.ui.Drawing.drawDirect(Drawing.java:133)
        at net.refractions.udig.ui.graphics.Glyph$4.getImageData(Glyph.java:239)
        at 
org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:279)
        at 
org.eclipse.jface.resource.ImageDescriptor.createImage(ImageDescriptor.java:253)
        at 
net.refractions.udig.project.ui.internal.LayerGeneratedGlyphDecorator$2$1.run(LayerGeneratedGlyphDecorator.java:197)

Caused by: java.lang.UnsatisfiedLinkError: 
/home/rgould/dev/workspace-udig-trunk/.metadata/.plugins/org.eclipse.pde.core/udig.product/org.eclipse.osgi/bundles/208/1/.cp/libswt-cairo-gtk-3139.so:
 libcairo.so.1: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1660)
        at java.lang.Runtime.loadLibrary0(Runtime.java:822)
        at java.lang.System.loadLibrary(System.java:992)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
        at org.eclipse.swt.internal.cairo.Cairo.<clinit>(Cairo.java:27)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at org.eclipse.swt.graphics.Device.checkCairo(Device.java:152)
        ... 33 more

A temporary fix for now is to fall back on ViewportPaneJava in MapEditor when 
Linux is detected:
       if (Platform.getOS().equals(Platform.OS_LINUX)) {
                viewportPane = new ViewportPaneJava(parent, this);
        } else {
                viewportPane = new ViewportPaneSWT(parent, this);
        }

See eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=114298

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to