diff options
Diffstat (limited to 'src/xine-engine/video_overlay.c')
-rw-r--r-- | src/xine-engine/video_overlay.c | 111 |
1 files changed, 23 insertions, 88 deletions
diff --git a/src/xine-engine/video_overlay.c b/src/xine-engine/video_overlay.c index f38c79890..56409e63a 100644 --- a/src/xine-engine/video_overlay.c +++ b/src/xine-engine/video_overlay.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_overlay.c,v 1.25 2002/10/21 12:11:03 jcdutton Exp $ + * $Id: video_overlay.c,v 1.26 2002/11/19 00:45:42 miguelfreitas Exp $ * */ @@ -130,7 +130,7 @@ static void remove_events_handle( video_overlay_t *this, int32_t handle, int loc /* mark as free */ this->events[this_event].next_event = 0; - this->events[this_event].event->event_type = EVENT_NULL; + this->events[this_event].event->event_type = OVERLAY_EVENT_NULL; this_event=this->events[last_event].next_event; } @@ -252,7 +252,6 @@ static int32_t video_overlay_add_event(video_overlay_instance_t *this_gen, void video_overlay_event_t *event = (video_overlay_event_t *) event_gen; video_overlay_t *this = (video_overlay_t *) this_gen; uint32_t last_event,this_event,new_event; - printf("xine-lib:video_overlay_add_event called\n"); pthread_mutex_lock (&this->events_mutex); @@ -310,8 +309,8 @@ static int32_t video_overlay_add_event(video_overlay_instance_t *this_gen, void /* not currently used. James might need this for debugging menu stuff */ -static void video_overlay_print_overlay( vo_overlay_t *ovl ) { #ifdef LOG_DEBUG +static void video_overlay_print_overlay( vo_overlay_t *ovl ) { printf ("video_overlay: OVERLAY to show\n"); printf ("video_overlay: \tx = %d y = %d width = %d height = %d\n", ovl->x, ovl->y, ovl->width, ovl->height ); @@ -325,9 +324,9 @@ static void video_overlay_print_overlay( vo_overlay_t *ovl ) { ovl->clip_color[0], ovl->clip_color[1], ovl->clip_color[2], ovl->clip_color[3]); printf ("video_overlay: \tclip_trans [%d %d %d %d]\n", ovl->clip_trans[0], ovl->clip_trans[1], ovl->clip_trans[2], ovl->clip_trans[3]); -#endif return; } +#endif /* process overlay events @@ -347,7 +346,7 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { processed++; handle=this->events[this_event].event->object.handle; switch( this->events[this_event].event->event_type ) { - case EVENT_SHOW_SPU: + case OVERLAY_EVENT_SHOW: #ifdef LOG_DEBUG printf ("video_overlay: SHOW SPU NOW\n"); #endif @@ -378,28 +377,8 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { add_showing_handle( this, handle ); } break; - - case EVENT_FREE_HANDLE: -#ifdef LOG_DEBUG - printf ("video_overlay: FREE SPU NOW\n"); -#endif - /* free any overlay associated with this event */ - if (this->events[this_event].event->object.overlay != NULL) { - free(this->events[this_event].event->object.overlay); - this->events[this_event].event->object.overlay = NULL; - } - /* this avoid removing this_event from the queue - * (it will be removed at the end of this loop) */ - this->events[this_event].event->object.handle = -1; - remove_showing_handle(this,handle); - remove_events_handle(this,handle,0); - internal_video_overlay_free_handle( this, handle ); - break; - - /* implementation for HIDE_SPU and HIDE_MENU is the same. - i will keep them separated in case we need something special... - */ - case EVENT_HIDE_SPU: + + case OVERLAY_EVENT_HIDE: #ifdef LOG_DEBUG printf ("video_overlay: HIDE SPU NOW\n"); #endif @@ -410,51 +389,26 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { } remove_showing_handle( this, handle ); break; - - case EVENT_HIDE_MENU: + + case OVERLAY_EVENT_FREE_HANDLE: #ifdef LOG_DEBUG - printf ("video_overlay: HIDE MENU NOW %d\n",handle); + printf ("video_overlay: FREE SPU NOW\n"); #endif + /* free any overlay associated with this event */ if (this->events[this_event].event->object.overlay != NULL) { free(this->events[this_event].event->object.overlay); this->events[this_event].event->object.overlay = NULL; } - remove_showing_handle( this, handle ); - break; - - case EVENT_SHOW_MENU: -#ifdef LOG_DEBUG - printf ("video_overlay: SHOW MENU NOW\n"); -#endif - if (this->events[this_event].event->object.overlay != NULL) { -#ifdef LOG_DEBUG - video_overlay_print_overlay( this->events[this_event].event->object.overlay ) ; -#endif - /* this->objects[handle].overlay is about to be - * overwritten by this event data. make sure we free it if needed. - */ - if( this->objects[handle].overlay ) { - if( this->objects[handle].overlay->rle ) - free( this->objects[handle].overlay->rle ); - free( this->objects[handle].overlay ); - this->objects[handle].overlay = NULL; - } - - this->objects[handle].handle = handle; - if( this->objects[handle].overlay ) { - printf("video_overlay: error: object->overlay was not freed!\n"); - } - this->objects[handle].overlay = - this->events[this_event].event->object.overlay; - this->objects[handle].pts = - this->events[this_event].event->object.pts; - this->events[this_event].event->object.overlay = NULL; - - add_showing_handle( this, handle ); - } + /* this avoid removing this_event from the queue + * (it will be removed at the end of this loop) */ + this->events[this_event].event->object.handle = -1; + remove_showing_handle(this,handle); + remove_events_handle(this,handle,0); + internal_video_overlay_free_handle( this, handle ); break; - - case EVENT_MENU_BUTTON: + + + case OVERLAY_EVENT_MENU_BUTTON: /* mixes palette and copy clip coords */ #ifdef LOG_DEBUG printf ("video_overlay:MENU BUTTON NOW\n"); @@ -465,7 +419,10 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { this->objects[handle].pts) ) { vo_overlay_t *overlay = this->objects[handle].overlay; vo_overlay_t *event_overlay = this->events[this_event].event->object.overlay; + +#ifdef LOG_DEBUG printf ("video_overlay:overlay present\n"); +#endif this->objects[handle].handle = handle; overlay->clip_top = event_overlay->clip_top; overlay->clip_bottom = event_overlay->clip_bottom; @@ -480,28 +437,6 @@ static int video_overlay_event( video_overlay_t *this, int64_t vpts ) { overlay->clip_trans[2] = event_overlay->clip_trans[2]; overlay->clip_trans[3] = event_overlay->clip_trans[3]; overlay->clip_rgb_clut = event_overlay->clip_rgb_clut; -/*********************************** - if((event_overlay->color[0] + - event_overlay->color[1] + - event_overlay->color[2] + - event_overlay->color[3]) > 0 ) { - overlay->color[0] = event_overlay->color[0]; - overlay->color[1] = event_overlay->color[1]; - overlay->color[2] = event_overlay->color[2]; - overlay->color[3] = event_overlay->color[3]; - - overlay->rgb_clut = event_overlay->rgb_clut; - } - if((event_overlay->trans[0] + - event_overlay->trans[1] + - event_overlay->trans[2] + - event_overlay->trans[3]) > 0 ) { - overlay->trans[0] = event_overlay->trans[0]; - overlay->trans[1] = event_overlay->trans[1]; - overlay->trans[2] = event_overlay->trans[2]; - overlay->trans[3] = event_overlay->trans[3]; - } -***********************************/ #ifdef LOG_DEBUG video_overlay_print_overlay( this->events[this_event].event->object.overlay ) ; #endif |