diff options
-rw-r--r-- | libraries/libvdpau/libvdpau.SlackBuild | 6 | ||||
-rw-r--r-- | libraries/libvdpau/patches/0001-vdpau_trace-WAR-Flash-quirks.patch | 492 | ||||
-rw-r--r-- | libraries/libvdpau/patches/vdpau_wrapper_c.patch | 179 |
3 files changed, 1 insertions, 676 deletions
diff --git a/libraries/libvdpau/libvdpau.SlackBuild b/libraries/libvdpau/libvdpau.SlackBuild index 3eca476791..4eb5367f2d 100644 --- a/libraries/libvdpau/libvdpau.SlackBuild +++ b/libraries/libvdpau/libvdpau.SlackBuild @@ -24,7 +24,7 @@ PRGNAM=libvdpau VERSION=0.4.1 -BUILD=${BUILD:-2} +BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then @@ -65,10 +65,6 @@ cd $PRGNAM-$VERSION chown -R root:root . chmod -R u+w,go+r-w,a-s . -# apply a patch from git and another for buggy flash -patch -p1 < $CWD/patches/vdpau_wrapper_c.patch -patch -p1 < $CWD/patches/0001-vdpau_trace-WAR-Flash-quirks.patch - CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ diff --git a/libraries/libvdpau/patches/0001-vdpau_trace-WAR-Flash-quirks.patch b/libraries/libvdpau/patches/0001-vdpau_trace-WAR-Flash-quirks.patch deleted file mode 100644 index 46b81f3d3d..0000000000 --- a/libraries/libvdpau/patches/0001-vdpau_trace-WAR-Flash-quirks.patch +++ /dev/null @@ -1,492 +0,0 @@ -From 079bd445d1fed5e12772a28142c916b1510fe848 Mon Sep 17 00:00:00 2001 -From: Pierre-Loup A. Griffais <git@plagman.net> -Date: Tue, 10 Jan 2012 18:41:37 -0800 -Subject: [PATCH] vdpau_trace: WAR Flash quirks - -This stubs out all the tracing routines but two; one to ignore calls to -set_background_color to ignore Flash setting the colorkey to black. The other -wrapped function is put_bits_y_cb_cr, to swap the U and V planes as Flash sends -them to us in the wrong order. ---- - trace/vdpau_trace.cpp | 411 +------------------------------------------------ - 1 files changed, 6 insertions(+), 405 deletions(-) - -diff --git a/trace/vdpau_trace.cpp b/trace/vdpau_trace.cpp -index 821209a..3e74882 100644 ---- a/trace/vdpau_trace.cpp -+++ b/trace/vdpau_trace.cpp -@@ -1822,60 +1822,19 @@ static VdpStatus _vdp_cap_video_surface_put_bits_y_cb_cr( - ) - { - VdpStatus ret; -+ void* swapped_source_data[3]; - -- _VdpcapPlane planes[3]; -- uint32_t plane_count = _VDP_TRACE_ARSIZE(planes); -- bool dump_data = _vdp_cap_init_planes( -- surface, -- source_data, -- source_pitches, -- 0, -- &plane_count, -- planes, -- _vdp_cap_init_planes_adapt_surface_video, -- _vdp_cap_init_planes_adapt_format_bits_ycbcr, -- source_ycbcr_format -- ); -- if (!dump_data) { -- plane_count = 0; -- } -- -- fputs("vdp_video_surface_put_bits_y_cb_cr(", _vdp_cap_data.fp); -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf( -- _vdp_cap_data.fp, -- "%u, %u, ", -- surface, -- source_ycbcr_format -- ); -- _vdp_cap_dump_void_pointer_list(plane_count, source_data, true); -- fputs(", ", _vdp_cap_data.fp); -- _vdp_cap_dump_uint32_t_list(plane_count, source_pitches, true); -- fputs(", ", _vdp_cap_data.fp); -- } -- fputs(")\n", _vdp_cap_data.fp); -- if (_vdp_cap_data.level >= LEVEL_DATA) { -- fputs(" ... Data: ", _vdp_cap_data.fp); -- if (dump_data) { -- _vdp_cap_dump_plane_list(plane_count, planes); -- } -- else { -- fputs("???", _vdp_cap_data.fp); -- } -- fputs("\n", _vdp_cap_data.fp); -- } -+ swapped_source_data[0] = (void*)source_data[0]; -+ swapped_source_data[1] = (void*)source_data[2]; -+ swapped_source_data[2] = (void*)source_data[1]; - - ret = _vdp_cap_data.vdp_video_surface_put_bits_y_cb_cr( - surface, - source_ycbcr_format, -- source_data, -+ swapped_source_data, - source_pitches - ); - -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf(_vdp_cap_data.fp, " -> %d\n", ret); -- } -- - return ret; - } - -@@ -3863,29 +3822,7 @@ static VdpStatus _vdp_cap_presentation_queue_set_background_color( - VdpColor * const background_color - ) - { -- VdpStatus ret; -- -- fputs("vdp_presentation_queue_set_background_color(", _vdp_cap_data.fp); -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf( -- _vdp_cap_data.fp, -- "%u, ", -- presentation_queue -- ); -- _vdp_cap_dump_color(background_color); -- } -- fputs(")\n", _vdp_cap_data.fp); -- -- ret = _vdp_cap_data.vdp_presentation_queue_set_background_color( -- presentation_queue, -- background_color -- ); -- -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf(_vdp_cap_data.fp, " -> %d\n", ret); -- } -- -- return ret; -+ return VDP_STATUS_OK; - } - - static VdpStatus _vdp_cap_presentation_queue_get_background_color( -@@ -4139,18 +4076,6 @@ static VdpStatus _vdp_cap_presentation_queue_target_create_x11( - { - VdpStatus ret; - -- fprintf(_vdp_cap_data.fp, "vdp_presentation_queue_target_create_x11("); -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf( -- _vdp_cap_data.fp, -- "%u, %lu, %s", -- device, -- drawable, -- target ? "-" : "NULL" -- ); -- } -- fputs(")\n", _vdp_cap_data.fp); -- - ret = _vdp_cap_data.vdp_presentation_queue_target_create_x11( - device, - drawable, -@@ -4182,18 +4107,6 @@ static VdpStatus _vdp_cap_get_proc_address( - { - VdpStatus ret; - -- fputs("vdp_get_proc_address(", _vdp_cap_data.fp); -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf( -- _vdp_cap_data.fp, -- "%u, %u, %s", -- device, -- function_id, -- function_pointer ? "-" : "NULL" -- ); -- } -- fputs(")\n", _vdp_cap_data.fp); -- - if (device != _vdp_cap_data.vdp_device) { - _VDP_TRACE_ERROR_BREAKPOINT(); - ret = VDP_STATUS_ERROR; -@@ -4207,317 +4120,17 @@ static VdpStatus _vdp_cap_get_proc_address( - *function_pointer = 0; - - switch (function_id) { -- case VDP_FUNC_ID_GET_ERROR_STRING: -- if (_vdp_cap_data.vdp_get_error_string) { -- *function_pointer = (void *)&_vdp_cap_get_error_string; -- } -- break; -- case VDP_FUNC_ID_GET_PROC_ADDRESS: -- if (_vdp_cap_data.vdp_get_proc_address) { -- *function_pointer = (void *)&_vdp_cap_get_proc_address; -- } -- break; -- case VDP_FUNC_ID_GET_API_VERSION: -- if (_vdp_cap_data.vdp_get_api_version) { -- *function_pointer = (void *)&_vdp_cap_get_api_version; -- } -- break; -- case VDP_FUNC_ID_GET_INFORMATION_STRING: -- if (_vdp_cap_data.vdp_get_information_string) { -- *function_pointer = (void *)&_vdp_cap_get_information_string; -- } -- break; -- case VDP_FUNC_ID_DEVICE_DESTROY: -- if (_vdp_cap_data.vdp_device_destroy) { -- *function_pointer = (void *)&_vdp_cap_device_destroy; -- } -- break; -- case VDP_FUNC_ID_GENERATE_CSC_MATRIX: -- if (_vdp_cap_data.vdp_generate_csc_matrix) { -- *function_pointer = (void *)&_vdp_cap_generate_csc_matrix; -- } -- break; -- case VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES: -- if (_vdp_cap_data.vdp_video_surface_query_capabilities) { -- *function_pointer = (void *)&_vdp_cap_video_surface_query_capabilities; -- } -- break; -- case VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES: -- if (_vdp_cap_data.vdp_video_surface_query_get_put_bits_y_cb_cr_capabilities) { -- *function_pointer = (void *)&_vdp_cap_video_surface_query_get_put_bits_y_cb_cr_capabilities; -- } -- break; -- case VDP_FUNC_ID_VIDEO_SURFACE_CREATE: -- if (_vdp_cap_data.vdp_video_surface_create) { -- *function_pointer = (void *)&_vdp_cap_video_surface_create; -- } -- break; -- case VDP_FUNC_ID_VIDEO_SURFACE_DESTROY: -- if (_vdp_cap_data.vdp_video_surface_destroy) { -- *function_pointer = (void *)&_vdp_cap_video_surface_destroy; -- } -- break; -- case VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS: -- if (_vdp_cap_data.vdp_video_surface_get_parameters) { -- *function_pointer = (void *)&_vdp_cap_video_surface_get_parameters; -- } -- break; -- case VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR: -- if (_vdp_cap_data.vdp_video_surface_get_bits_y_cb_cr) { -- *function_pointer = (void *)&_vdp_cap_video_surface_get_bits_y_cb_cr; -- } -- break; - case VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR: - if (_vdp_cap_data.vdp_video_surface_put_bits_y_cb_cr) { - *function_pointer = (void *)&_vdp_cap_video_surface_put_bits_y_cb_cr; - } - break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES: -- if (_vdp_cap_data.vdp_output_surface_query_capabilities) { -- *function_pointer = (void *)&_vdp_cap_output_surface_query_capabilities; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES: -- if (_vdp_cap_data.vdp_output_surface_query_get_put_bits_native_capabilities) { -- *function_pointer = (void *)&_vdp_cap_output_surface_query_get_put_bits_native_capabilities; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES: -- if (_vdp_cap_data.vdp_output_surface_query_put_bits_indexed_capabilities) { -- *function_pointer = (void *)&_vdp_cap_output_surface_query_put_bits_indexed_capabilities; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES: -- if (_vdp_cap_data.vdp_output_surface_query_put_bits_y_cb_cr_capabilities) { -- *function_pointer = (void *)&_vdp_cap_output_surface_query_put_bits_y_cb_cr_capabilities; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_CREATE: -- if (_vdp_cap_data.vdp_output_surface_create) { -- *function_pointer = (void *)&_vdp_cap_output_surface_create; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY: -- if (_vdp_cap_data.vdp_output_surface_destroy) { -- *function_pointer = (void *)&_vdp_cap_output_surface_destroy; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS: -- if (_vdp_cap_data.vdp_output_surface_get_parameters) { -- *function_pointer = (void *)&_vdp_cap_output_surface_get_parameters; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE: -- if (_vdp_cap_data.vdp_output_surface_get_bits_native) { -- *function_pointer = (void *)&_vdp_cap_output_surface_get_bits_native; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE: -- if (_vdp_cap_data.vdp_output_surface_put_bits_native) { -- *function_pointer = (void *)&_vdp_cap_output_surface_put_bits_native; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED: -- if (_vdp_cap_data.vdp_output_surface_put_bits_indexed) { -- *function_pointer = (void *)&_vdp_cap_output_surface_put_bits_indexed; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR: -- if (_vdp_cap_data.vdp_output_surface_put_bits_y_cb_cr) { -- *function_pointer = (void *)&_vdp_cap_output_surface_put_bits_y_cb_cr; -- } -- break; -- case VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES: -- if (_vdp_cap_data.vdp_bitmap_surface_query_capabilities) { -- *function_pointer = (void *)&_vdp_cap_bitmap_surface_query_capabilities; -- } -- break; -- case VDP_FUNC_ID_BITMAP_SURFACE_CREATE: -- if (_vdp_cap_data.vdp_bitmap_surface_create) { -- *function_pointer = (void *)&_vdp_cap_bitmap_surface_create; -- } -- break; -- case VDP_FUNC_ID_BITMAP_SURFACE_DESTROY: -- if (_vdp_cap_data.vdp_bitmap_surface_destroy) { -- *function_pointer = (void *)&_vdp_cap_bitmap_surface_destroy; -- } -- break; -- case VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS: -- if (_vdp_cap_data.vdp_bitmap_surface_get_parameters) { -- *function_pointer = (void *)&_vdp_cap_bitmap_surface_get_parameters; -- } -- break; -- case VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE: -- if (_vdp_cap_data.vdp_bitmap_surface_put_bits_native) { -- *function_pointer = (void *)&_vdp_cap_bitmap_surface_put_bits_native; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE: -- if (_vdp_cap_data.vdp_output_surface_render_output_surface) { -- *function_pointer = (void *)&_vdp_cap_output_surface_render_output_surface; -- } -- break; -- case VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE: -- if (_vdp_cap_data.vdp_output_surface_render_bitmap_surface) { -- *function_pointer = (void *)&_vdp_cap_output_surface_render_bitmap_surface; -- } -- break; -- case VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES: -- if (_vdp_cap_data.vdp_decoder_query_capabilities) { -- *function_pointer = (void *)&_vdp_cap_decoder_query_capabilities; -- } -- break; -- case VDP_FUNC_ID_DECODER_CREATE: -- if (_vdp_cap_data.vdp_decoder_create) { -- *function_pointer = (void *)&_vdp_cap_decoder_create; -- } -- break; -- case VDP_FUNC_ID_DECODER_DESTROY: -- if (_vdp_cap_data.vdp_decoder_destroy) { -- *function_pointer = (void *)&_vdp_cap_decoder_destroy; -- } -- break; -- case VDP_FUNC_ID_DECODER_GET_PARAMETERS: -- if (_vdp_cap_data.vdp_decoder_get_parameters) { -- *function_pointer = (void *)&_vdp_cap_decoder_get_parameters; -- } -- break; -- case VDP_FUNC_ID_DECODER_RENDER: -- if (_vdp_cap_data.vdp_decoder_render) { -- *function_pointer = (void *)&_vdp_cap_decoder_render; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT: -- if (_vdp_cap_data.vdp_video_mixer_query_feature_support) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_query_feature_support; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT: -- if (_vdp_cap_data.vdp_video_mixer_query_parameter_support) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_query_parameter_support; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT: -- if (_vdp_cap_data.vdp_video_mixer_query_attribute_support) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_query_attribute_support; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE: -- if (_vdp_cap_data.vdp_video_mixer_query_parameter_value_range) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_query_parameter_value_range; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE: -- if (_vdp_cap_data.vdp_video_mixer_query_attribute_value_range) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_query_attribute_value_range; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_CREATE: -- if (_vdp_cap_data.vdp_video_mixer_create) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_create; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES: -- if (_vdp_cap_data.vdp_video_mixer_set_feature_enables) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_set_feature_enables; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES: -- if (_vdp_cap_data.vdp_video_mixer_set_attribute_values) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_set_attribute_values; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT: -- if (_vdp_cap_data.vdp_video_mixer_get_feature_support) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_get_feature_support; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES: -- if (_vdp_cap_data.vdp_video_mixer_get_feature_enables) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_get_feature_enables; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES: -- if (_vdp_cap_data.vdp_video_mixer_get_parameter_values) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_get_parameter_values; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES: -- if (_vdp_cap_data.vdp_video_mixer_get_attribute_values) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_get_attribute_values; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_DESTROY: -- if (_vdp_cap_data.vdp_video_mixer_destroy) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_destroy; -- } -- break; -- case VDP_FUNC_ID_VIDEO_MIXER_RENDER: -- if (_vdp_cap_data.vdp_video_mixer_render) { -- *function_pointer = (void *)&_vdp_cap_video_mixer_render; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY: -- if (_vdp_cap_data.vdp_presentation_queue_target_destroy) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_target_destroy; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE: -- if (_vdp_cap_data.vdp_presentation_queue_create) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_create; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY: -- if (_vdp_cap_data.vdp_presentation_queue_destroy) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_destroy; -- } -- break; - case VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR: - if (_vdp_cap_data.vdp_presentation_queue_set_background_color) { - *function_pointer = (void *)&_vdp_cap_presentation_queue_set_background_color; - } - break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR: -- if (_vdp_cap_data.vdp_presentation_queue_get_background_color) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_get_background_color; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME: -- if (_vdp_cap_data.vdp_presentation_queue_get_time) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_get_time; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY: -- if (_vdp_cap_data.vdp_presentation_queue_display) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_display; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE: -- if (_vdp_cap_data.vdp_presentation_queue_block_until_surface_idle) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_block_until_surface_idle; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS: -- if (_vdp_cap_data.vdp_presentation_queue_query_surface_status) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_query_surface_status; -- } -- break; -- case VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER: -- if (_vdp_cap_data.vdp_preemption_callback_register) { -- *function_pointer = (void *)&_vdp_cap_preemption_callback_register; -- } -- break; -- case VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11: -- if (_vdp_cap_data.vdp_presentation_queue_target_create_x11) { -- *function_pointer = (void *)&_vdp_cap_presentation_queue_target_create_x11; -- } -- break; - default: -- fprintf( -- _vdp_cap_data.fp, -- "VDPAU capture: Not able to proxy function %d", -- function_id -- ); - ret = _vdp_cap_data.vdp_get_proc_address(device, function_id, function_pointer); - break; - } -@@ -4527,18 +4140,6 @@ static VdpStatus _vdp_cap_get_proc_address( - } - } - -- if (_vdp_cap_data.level >= LEVEL_PARAMS) { -- fprintf(_vdp_cap_data.fp, " -> %d", ret); -- if (ret == VDP_STATUS_OK) { -- fprintf( -- _vdp_cap_data.fp, -- ", %p", -- *function_pointer -- ); -- } -- fputs("\n", _vdp_cap_data.fp); -- } -- - return ret; - } - --- -1.7.4.1 - diff --git a/libraries/libvdpau/patches/vdpau_wrapper_c.patch b/libraries/libvdpau/patches/vdpau_wrapper_c.patch deleted file mode 100644 index e32fc120a5..0000000000 --- a/libraries/libvdpau/patches/vdpau_wrapper_c.patch +++ /dev/null @@ -1,179 +0,0 @@ -From 4262513e67c3572ed19bd796ec6180cdde7ccb7e Mon Sep 17 00:00:00 2001 -From: Kiran Pawar <kpawar@nvidia.com> -Date: Fri, 05 Aug 2011 06:15:18 +0000 -Subject: vdpau_wrapper.c: Track dynamic library handles and free them on exit using __attribute__((destructor)) - -Signed-off-by: Kiran Pawar <kpawar@nvidia.com> -Tested-by: Aaron Plattner <aplattner@nvidia.com> -Signed-off-by: Aaron Plattner <aplattner@nvidia.com> ---- -diff --git a/src/vdpau_wrapper.c b/src/vdpau_wrapper.c -index f504775..23de3d4 100644 ---- a/src/vdpau_wrapper.c -+++ b/src/vdpau_wrapper.c -@@ -40,6 +40,17 @@ typedef void SetDllHandle( - void * driver_dll_handle - ); - -+static void * _vdp_backend_dll; -+static void * _vdp_trace_dll; -+static void * _vdp_driver_dll; -+static VdpDeviceCreateX11 * _vdp_imp_device_create_x11_proc; -+ -+#if defined(__GNUC__) -+ -+static void _vdp_close_driver(void) __attribute__((destructor)); -+ -+#endif -+ - #if DEBUG - - static void _vdp_wrapper_error_breakpoint(char const * file, int line, char const * function) -@@ -87,23 +98,16 @@ static char * _vdp_get_driver_name_from_dri2( - return driver_name; - } - --VdpStatus vdp_device_create_x11( -+static VdpStatus _vdp_open_driver( - Display * display, -- int screen, -- /* output parameters follow */ -- VdpDevice * device, -- VdpGetProcAddress * * get_proc_address --) -+ int screen) - { - char const * vdpau_driver; - char * vdpau_driver_dri2 = NULL; - char vdpau_driver_lib[PATH_MAX]; -- void * backend_dll; - char const * vdpau_trace; - char const * func_name; - -- VdpDeviceCreateX11 * vdp_imp_device_create_x11; -- - vdpau_driver = getenv("VDPAU_DRIVER"); - if (!vdpau_driver) { - vdpau_driver = vdpau_driver_dri2 = -@@ -125,13 +129,13 @@ VdpStatus vdp_device_create_x11( - return VDP_STATUS_NO_IMPLEMENTATION; - } - -- backend_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL); -- if (!backend_dll) { -+ _vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL); -+ if (!_vdp_driver_dll) { - /* Try again using the old path, which is guaranteed to fit in PATH_MAX - * if the complete path fit above. */ - snprintf(vdpau_driver_lib, sizeof(vdpau_driver_lib), DRIVER_LIB_FORMAT, - "", vdpau_driver, ""); -- backend_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL); -+ _vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL); - } - - if (vdpau_driver_dri2) { -@@ -139,26 +143,28 @@ VdpStatus vdp_device_create_x11( - vdpau_driver_dri2 = NULL; - } - -- if (!backend_dll) { -+ if (!_vdp_driver_dll) { - fprintf(stderr, "Failed to open VDPAU backend %s\n", dlerror()); - _VDP_ERROR_BREAKPOINT(); - return VDP_STATUS_NO_IMPLEMENTATION; - } - -+ _vdp_backend_dll = _vdp_driver_dll; -+ - vdpau_trace = getenv("VDPAU_TRACE"); - if (vdpau_trace && atoi(vdpau_trace)) { -- void * trace_dll; - SetDllHandle * set_dll_handle; - -- trace_dll = dlopen(VDPAU_MODULEDIR "/libvdpau_trace.so.1", RTLD_NOW | RTLD_GLOBAL); -- if (!trace_dll) { -+ _vdp_trace_dll = dlopen(VDPAU_MODULEDIR "/libvdpau_trace.so.1", -+ RTLD_NOW | RTLD_GLOBAL); -+ if (!_vdp_trace_dll) { - fprintf(stderr, "Failed to open VDPAU trace library %s\n", dlerror()); - _VDP_ERROR_BREAKPOINT(); - return VDP_STATUS_NO_IMPLEMENTATION; - } - - set_dll_handle = (SetDllHandle*)dlsym( -- trace_dll, -+ _vdp_trace_dll, - "vdp_trace_set_backend_handle" - ); - if (!set_dll_handle) { -@@ -167,9 +173,9 @@ VdpStatus vdp_device_create_x11( - return VDP_STATUS_NO_IMPLEMENTATION; - } - -- set_dll_handle(backend_dll); -+ set_dll_handle(_vdp_backend_dll); - -- backend_dll = trace_dll; -+ _vdp_backend_dll = _vdp_trace_dll; - - func_name = "vdp_trace_device_create_x11"; - } -@@ -177,17 +183,52 @@ VdpStatus vdp_device_create_x11( - func_name = "vdp_imp_device_create_x11"; - } - -- vdp_imp_device_create_x11 = (VdpDeviceCreateX11*)dlsym( -- backend_dll, -+ _vdp_imp_device_create_x11_proc = (VdpDeviceCreateX11*)dlsym( -+ _vdp_backend_dll, - func_name - ); -- if (!vdp_imp_device_create_x11) { -+ if (!_vdp_imp_device_create_x11_proc) { - fprintf(stderr, "%s\n", dlerror()); - _VDP_ERROR_BREAKPOINT(); - return VDP_STATUS_NO_IMPLEMENTATION; - } - -- return vdp_imp_device_create_x11( -+ return VDP_STATUS_OK; -+} -+ -+static void _vdp_close_driver(void) -+{ -+ if (_vdp_driver_dll) { -+ dlclose(_vdp_driver_dll); -+ _vdp_driver_dll = NULL; -+ } -+ if (_vdp_trace_dll) { -+ dlclose(_vdp_trace_dll); -+ _vdp_trace_dll = NULL; -+ } -+ _vdp_backend_dll = NULL; -+ _vdp_imp_device_create_x11_proc = NULL; -+} -+ -+VdpStatus vdp_device_create_x11( -+ Display * display, -+ int screen, -+ /* output parameters follow */ -+ VdpDevice * device, -+ VdpGetProcAddress * * get_proc_address -+) -+{ -+ VdpStatus status; -+ -+ if (!_vdp_imp_device_create_x11_proc) { -+ status = _vdp_open_driver(display, screen); -+ if (status != VDP_STATUS_OK) { -+ _vdp_close_driver(); -+ return status; -+ } -+ } -+ -+ return _vdp_imp_device_create_x11_proc( - display, - screen, - device, --- -cgit v0.9.0.2-2-gbebe |