summaryrefslogtreecommitdiff
path: root/src/video_out/video_out_xshm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_out/video_out_xshm.c')
-rw-r--r--src/video_out/video_out_xshm.c37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/video_out/video_out_xshm.c b/src/video_out/video_out_xshm.c
index 28fc79817..a33ee9922 100644
--- a/src/video_out/video_out_xshm.c
+++ b/src/video_out/video_out_xshm.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_xshm.c,v 1.15 2001/07/06 11:14:38 heikos Exp $
+ * $Id: video_out_xshm.c,v 1.16 2001/07/10 19:33:05 guenter Exp $
*
* video_out_xshm.c, X11 shared memory extension interface for xine
*
@@ -55,6 +55,7 @@
#include "utils.h"
#include "video_out_x11.h"
#include "yuv2rgb.h"
+#include "alphablend.h"
uint32_t xine_debug;
@@ -597,6 +598,31 @@ static void xshm_update_frame_format (vo_driver_t *this_gen,
}
}
+/*
+ *
+ */
+static void xshm_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay) {
+ xshm_driver_t *this = (xshm_driver_t *) this_gen;
+ xshm_frame_t *frame = (xshm_frame_t *) frame_gen;
+
+// Alpha Blend here
+ if (overlay->data) {
+ switch(this->bpp) {
+ case 16:
+ blend_rgb16( frame->image->data, overlay, frame->rgb_width, frame->rgb_height);
+ break;
+ case 24:
+ blend_rgb24( frame->image->data, overlay, frame->rgb_width, frame->rgb_height);
+ break;
+ case 32:
+ blend_rgb32( frame->image->data, overlay, frame->rgb_width, frame->rgb_height);
+ break;
+ default:
+/* It should never get here */
+ }
+ }
+}
+
static void xshm_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
@@ -654,13 +680,6 @@ static void xshm_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) {
}
}
-/* Stores an overlay in the Video Out driver */
-static void xshm_set_overlay (vo_driver_t *this_gen, vo_overlay_t *overlay) {
- xshm_driver_t *this = (xshm_driver_t *) this_gen;
-
- this->overlay = overlay;
-}
-
static int xshm_get_property (vo_driver_t *this_gen, int property) {
xshm_driver_t *this = (xshm_driver_t *) this_gen;
@@ -831,8 +850,8 @@ vo_driver_t *init_video_out_plugin (config_values_t *config, void *visual_gen) {
this->vo_driver.get_capabilities = xshm_get_capabilities;
this->vo_driver.alloc_frame = xshm_alloc_frame;
this->vo_driver.update_frame_format = xshm_update_frame_format;
+ this->vo_driver.overlay_blend = xshm_overlay_blend;
this->vo_driver.display_frame = xshm_display_frame;
- this->vo_driver.set_overlay = xshm_set_overlay;
this->vo_driver.get_property = xshm_get_property;
this->vo_driver.set_property = xshm_set_property;
this->vo_driver.get_property_min_max = xshm_get_property_min_max;