From Martin von Gagern, "The xine osg plugin won't compile against xine-lib-1.2.0:

OpenSceneGraph-3.0.1/src/osgPlugins/xine/video_out_rgb.c:2772:25:
error: ?video_driver_class_t? has no member named ?get_identifier?
OpenSceneGraph-3.0.1/src/osgPlugins/xine/video_out_rgb.c:2773:25:
error: ?video_driver_class_t? has no member named ?get_description?

This has been reported on Gentoo: https://bugs.gentoo.org/397643
The relevant commit to the xine-lib repository is
http://anonscm.debian.org/hg/xine-lib/xine-lib-1.2/diff/806b590a4d38/src/xine-engine/video_out.h

This change addresses the issue. I'm sending the full modified file as
an attachment. It is based on the 3.0.1 release of OSG. I'll also paste
a diff below. You will find a colorized view in the Gentoo bugzilla.

The xine-lib API changed in the following way: the identifier and
description members are now "const char*" strings instead of "char*
(*)(video_driver_class_t*)" getter function. As the functions in the osg
plugin will always simply return a string literal, without accessing
their argument, it is safe to simply call them with a NULL argument and
use the returned string. This makes it easy to support both API
versions. When you drop support for older xine one day, you might want
to move the string literals to the assignment, getting rid of the
functions in the process.

The modified code compiles for me. I'm not sure how to test it, as I've
only got OSG around in order to build (and hopefully one day even use)
Flightgear.

I'm assigning my copyright in this change to the osg project leads.
"
This commit is contained in:
Robert Osfield
2012-02-09 16:42:47 +00:00
parent 5743d30dc1
commit 2dbd24b52d

View File

@@ -2769,8 +2769,14 @@ init_class(xine_t* xine, void* vo_visual)
clear(rgb_class, sizeof(rgbout_class_t));
rgb_class->driver_class.open_plugin = open_plugin;
#if XINE_MAJOR_VERSION < 1 || (XINE_MAJOR_VERSION == 1 && XINE_MINOR_VERSION < 2)
rgb_class->driver_class.get_identifier = get_identifier;
rgb_class->driver_class.get_description = get_description;
#else
rgb_class->driver_class.identifier = get_identifier(NULL);
rgb_class->driver_class.description = get_description(NULL);
#endif
rgb_class->driver_class.dispose = dispose_class;
return(rgb_class);