Hi,
I upgraded my xinelib-1.2 to the latest from hg, recompiled xineliboutput and its frontends and now vdr-sxfe will not start. I get this in the log:
Nov 17 22:56:26 giradot vdr-sxfe[6256]: [6256] [scrnsaver] Error: The name org.gnome.ScreenSaver was not provided by any .service files Nov 17 22:56:26 giradot vdr-sxfe[6256]: [6256] [xine-vo ] wire_video_driver() FAILED (vo_driver != vos_driver) Nov 17 22:56:26 giradot kernel: vdr-sxfe[6256]: segfault at 0 ip (null) sp 00007fffa201d2b8 error 14 in vdr-sxfe[400000+22000] Nov 17 22:56:26 giradot vdr-sxfe[6256]: [6256] [vdr-fe] wire_video_driver() for osdscaler failed
Looking at the code for wire_video_driver, I dont understand how this is meant to work. It seems to take the driver element from the xine_video_port_t (or xine_video_port_s) and compare it to the same variable but cast to a vos_t and its ->driver:
typedef struct { xine_video_port_t vo; /* public part */ vo_driver_t *driver; /* ... */ } vos_t;
int wire_video_driver(xine_video_port_t *video_port, vo_driver_t *hook) { vo_driver_t *vos_driver = ((vos_t*)video_port)->driver;
if (video_port->driver != vos_driver) { LOGMSG("wire_video_driver() FAILED (vo_driver != vos_driver)"); return 0; } ...
But how is this meant to work as in xine_video_port_t the driver is the last element, but in vos_t driver is after the xine_video_port, so wouldn't that be 4 bytes later (on a 32 bit system)?
Obviously my C is not up to scratch :-(