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 :-(
_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr