[Nautilus-list] nautilus and EOG component


I worked a bit on the eog component and Nautilus recently,
with the help of Lutz Muller, who wrote the gnome-vfs module
to handle digital camera requests.

The goal is to access my digital camera pictures in
nautilus through the gnome-vfs with the eog image
viewer component. But the problem I'll describe is
generic and not related to the gnome-vfs module. 

I now have difficulties to embed the eog component in nautilus.

I first problem I found is that vfs_get_info() in
components/adapter/bonobo-stream-vfs.c needs to be
implemented. I reused some code from the bonobo 
module for this. See bugzilla #44402.

Now, the eog component is correctly launched when
invoking nautilus on an image file directly from
the command line (nautilus file:///tmp/image.png).
 The image may be on the local fs or remote in the 
camera, everything is fine.  (eog is my default 
handler for images)

Then, when I invoke nautilus on a directory containing
images, I cannot start the eog component directly
through the GUI (Open with -> EOG image viewer).
The nautilus-adapter processes crashes with the
following stack :

Program received signal SIGSEGV, Segmentation fault.
0x400b2429 in impl_Bonobo_Control_activate (servant=0x8151b14, activated=1, 
    ev=0xbfffefa0) at bonobo-control.c:213
213		control->priv->active = activated;
(gdb) up
#1  0x40069173 in _ORBIT_skel_Bonobo_Control_activate (
    _ORBIT_servant=0x8151b14, _ORBIT_recv_buffer=0x80c16d0, ev=0xbfffefa0, 
    _impl_activate=0x400b2370 <impl_Bonobo_Control_activate>)
    at Bonobo-skels.c:6154
up6154	   _impl_activate(_ORBIT_servant, activate, ev);
(gdb) up
#2  0x403bc10a in ORBit_POA_handle_request () from /usr/lib/libORBit.so.0
(gdb) bt
#0  0x400b2429 in impl_Bonobo_Control_activate (servant=0x8151b14, 
    activated=1, ev=0xbfffefa0) at bonobo-control.c:213
#1  0x40069173 in _ORBIT_skel_Bonobo_Control_activate (
    _ORBIT_servant=0x8151b14, _ORBIT_recv_buffer=0x80c16d0, ev=0xbfffefa0, 
    _impl_activate=0x400b2370 <impl_Bonobo_Control_activate>)
    at Bonobo-skels.c:6154
#2  0x403bc10a in ORBit_POA_handle_request () from /usr/lib/libORBit.so.0
#3  0x403bf157 in CORBA_ORB_run () from /usr/lib/libORBit.so.0
#4  0x403bf44f in CORBA_ORB_run () from /usr/lib/libORBit.so.0
#5  0x403d9322 in giop_recv_reply_buffer_use_multiple_2 ()
   from /usr/lib/libIIOP.so.0
#6  0x403d93f1 in giop_recv_reply_buffer_use_2 () from /usr/lib/libIIOP.so.0
#7  0x4004f571 in Bonobo_Unknown_unref (_obj=0x81545d8, ev=0xbffff110)
    at Bonobo-stubs.c:169
#8  0x4007dbc8 in bonobo_object_release_unref (object=0x81545d8, ev=0x0)
    at bonobo-object.c:444
#9  0x4002e16e in view_frame_call_end (frame=0x81545d8, ev=0xbffff180)
    at nautilus-view.c:522
#10 0x4002e6f5 in call_report_load_complete (view=0x8151ed8, callback_data=0x0)
    at nautilus-view.c:733
#11 0x4002b38b in execute_queued_functions (callback_data=0x8151f38)
    at nautilus-idle-queue.c:66
#12 0x4080379d in g_idle_dispatch () from /usr/lib/libglib-1.2.so.0
#13 0x40802773 in g_main_dispatch () from /usr/lib/libglib-1.2.so.0
#14 0x40802d39 in g_main_iterate () from /usr/lib/libglib-1.2.so.0

--> the BonoboControl is freeed in the middle of impl_Bonobo_Control_activate()
 in bonobo/bonobo-control.c

The eog component also seems to behave strangely :

[bellet lxorgfr bellet]% env DEBUG_EOG=1 eog-image-viewer

Message: Successfully registered `OAFIID:GNOME_EOG_Factory'
Eog-Message: Trying to produce a 'OAFIID:GNOME_EOG_Control'...
Eog-Message: Creating EogControl...
Eog-Message: Creating EogImageView...
Eog-Message: Loading stream...
Eog-Message: Setting ui container for EogImageView...

Gdk-WARNING **: GdkWindow 0x4c00022 unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c00023 unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c00024 unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c00021 unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c0001e unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c0001f unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c00020 unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c0001d unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c00017 unexpectedly destroyed

Gdk-WARNING **: GdkWindow 0x4c00006 unexpectedly destroyed
Eog-Message: Destroying EogImageView...
Eog-Message: EogImageView destroyed.
Eog-Message: Destroying EogControl...

A last point : when I first display the image with the 
image viewer component, and then switch to the EOG
component, everything runs fine.

I don't have enough knowledge of nautilus internals to
handle this alone. Would it be possible to have some
help/suggestion from Nautilus hackers, on what's going
wrong here ? Thanks in advance.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]