Add a 'struct vo *vo' argument to the x11_common.c functions that
access the variable so it's available as vo->opts->vo_ontop. To keep
VOs using the old API working create a global vo variable that is set
to the currently used old vo. "vo_ontop" will be #defined to
"global_vo->opts->vo_ontop", and x11_common.h will add defines like
the following when it is included by old VOs:
#define vo_x11_ontop() vo_x11_ontop(global_vo)
so that they will call the function according to the new declaration.
Rename the vo_ontop() macro to vo_gl_ontop(). It caused problems with
other changes because it conflicts with a global variable name (gl2
actually called vo_ontop() as a function and used vo_ontop as an int -
this only worked because vo_ontop was defined as a function-like macro
and use without parentheses didn't trigger replacement).
If preinit() failed after allocating some resources it didn't free
them. Also if preinit() completed but all (if any) calls to config()
failed then uninit() it not free resources. Add checks to uninit() to
make it safe with only a subset of resources allocated, then make it
execute independently of vo_config_count and also make preinit() call
it in error cases.
The previous version was not buggy, but this is easier to see correct.
Now it doesn't depend on options determining num_buffers staying
constant and on vo_config_count.
Combine code unnecessarily split in 3 #ifdef blocks into one block and
change local variables there were pointlessly declared static to
normal ones.
After this vo_xv.c no longer defines any global or static variables.
Create new video driver API that has a per-instance context structure
and does not rely on keeping status in global or static variables.
Existing drivers are not yet converted to this API; instead there is a
wrapper which translates calls to them.
In the new API, an old API call vo_functions->xyz(args) is generally
replaced by vo_xyz(vo_instance, args).
The changes to keep the vesa, dxr2 and xover drivers compiling have
not been tested.
These were the only voctrl types with more than one argument. The
second argument was passed using variable arguments. Change them to
use a single argument (address of a struct containing both old
arguments). This makes forwarding the arguments to other functions
easier and allows simplifying code.
Done with the permission of Andreas Ackermann, the author of the file.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26432 b3059339-0415-0410-9bf9-f77b7e298cf2
The whole functionality should probably be used to libavcodec though.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26322 b3059339-0415-0410-9bf9-f77b7e298cf2
Change ".balign 16\n\t" to ASMALIGN(4) and "/nop" to " # nop". The new
version is what other code in MPlayer uses, and works with old
assembler versions like that used on OS X.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26005 b3059339-0415-0410-9bf9-f77b7e298cf2