Update of /cvsroot/xine/xine-lib/src/video_out
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5372/src/video_out

Modified Files:
        video_out_xcbxv.c video_out_xv.c 
Log Message:
Properly repaint the whole surface during expose events. Patch by Christoph 
Pfister.

Index: video_out_xcbxv.c
===================================================================
RCS file: /cvsroot/xine/xine-lib/src/video_out/video_out_xcbxv.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- video_out_xcbxv.c   15 Feb 2007 15:19:33 -0000      1.1
+++ video_out_xcbxv.c   15 Feb 2007 18:26:55 -0000      1.2
@@ -898,6 +898,9 @@
     /* XExposeEvent * xev = (XExposeEvent *) data; */
 
     if (this->cur_frame) {
+      int i;
+      xcb_rectangle_t rects[4];
+      int rects_count = 0;
 
       pthread_mutex_lock(&this->main_mutex);
 
@@ -920,6 +923,21 @@
                         this->cur_frame->xv_data_size, this->cur_frame->image);
       }
 
+      xcb_change_gc(this->connection, this->gc, XCB_GC_FOREGROUND, 
&this->screen->black_pixel);
+
+      for( i = 0; i < 4; i++ ) {
+       if( this->sc.border[i].w && this->sc.border[i].h ) {
+         rects[rects_count].x = this->sc.border[i].x;
+         rects[rects_count].y = this->sc.border[i].y;
+         rects[rects_count].width = this->sc.border[i].w;
+         rects[rects_count].height = this->sc.border[i].h;
+         rects_count++;
+       }
+      }
+
+      if (rects_count > 0)
+       xcb_poly_fill_rectangle(this->connection, this->window, this->gc, 
rects_count, rects);
+
       if(this->xoverlay)
        xcbosd_expose(this->xoverlay);
       

Index: video_out_xv.c
===================================================================
RCS file: /cvsroot/xine/xine-lib/src/video_out/video_out_xv.c,v
retrieving revision 1.221
retrieving revision 1.222
diff -u -r1.221 -r1.222
--- video_out_xv.c      25 Dec 2006 15:19:51 -0000      1.221
+++ video_out_xv.c      15 Feb 2007 18:26:55 -0000      1.222
@@ -953,6 +953,7 @@
     /* XExposeEvent * xev = (XExposeEvent *) data; */
 
     if (this->cur_frame) {
+      int i;
 
       LOCK_DISPLAY(this);
 
@@ -972,6 +973,16 @@
                   this->sc.output_width, this->sc.output_height);
       }
 
+      XSetForeground (this->display, this->gc, this->black.pixel);
+
+      for( i = 0; i < 4; i++ ) {
+       if( this->sc.border[i].w && this->sc.border[i].h ) {
+         XFillRectangle(this->display, this->drawable, this->gc,
+                        this->sc.border[i].x, this->sc.border[i].y,
+                        this->sc.border[i].w, this->sc.border[i].h);
+       }
+      }
+
       if(this->xoverlay)
        x11osd_expose(this->xoverlay);
       


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Xine-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xine-cvslog

Reply via email to