[MPlayer-cvslog] r38164 - in trunk: Changelog gui/wm/ws.c
    ib 
    subversion at mplayerhq.hu
       
    Fri Jan 31 14:27:09 EET 2020
    
    
  
Author: ib
Date: Fri Jan 31 14:27:09 2020
New Revision: 38164
Log:
Clear screen when switching to fullscreen mode using -vo x11.
The areas surrounding the XImage must be deleted if the window
is larger than the XImage.
Modified:
   trunk/Changelog
   trunk/gui/wm/ws.c
Modified: trunk/Changelog
==============================================================================
--- trunk/Changelog	Fri Jan 31 14:15:13 2020	(r38163)
+++ trunk/Changelog	Fri Jan 31 14:27:09 2020	(r38164)
@@ -6,6 +6,8 @@ MPlayer
 
     GUI:
     * Fix wrongly sized video window after leaving fullscreen mode
+    * Clear screen when switching to fullscreen mode using the x11
+      video output driver
 
   1.4: "SubCounter" April 18, 2019
 
Modified: trunk/gui/wm/ws.c
==============================================================================
--- trunk/gui/wm/ws.c	Fri Jan 31 14:15:13 2020	(r38163)
+++ trunk/gui/wm/ws.c	Fri Jan 31 14:27:09 2020	(r38164)
@@ -343,6 +343,25 @@ static int wsWindowListSearch(Window win
     return -1;
 }
 
+static void wsClearWindowParts(Display *display, wsWindow *win)
+{
+    int W_leftover, H_leftover;
+
+    if (win->Width <= win->xImage->width && win->Height <= win->xImage->height)
+        return;
+
+    W_leftover = (win->Width - win->xImage->width) / 2;
+    H_leftover = (win->Height - win->xImage->height) / 2;
+
+    XFillRectangle(display, win->WindowID, win->wGC, 0, 0, win->Width, H_leftover);
+    XFillRectangle(display, win->WindowID, win->wGC, 0, win->Height - H_leftover - 1, win->Width, H_leftover + 1);
+
+    if (win->Width > win->xImage->width) {
+        XFillRectangle(display, win->WindowID, win->wGC, 0, H_leftover, W_leftover, win->xImage->height);
+        XFillRectangle(display, win->WindowID, win->wGC, win->Width - W_leftover - 1, H_leftover, W_leftover + 1, win->xImage->height);
+    }
+}
+
 void wsEvent(XEvent *event)
 {
     unsigned long i = 0;
@@ -443,8 +462,10 @@ expose:
 
         wsWindowList[l]->State = wsWindowExpose;
 
-        if ((wsWindowList[l]->DrawHandler) && (!event->xexpose.count))
+        if ((wsWindowList[l]->DrawHandler) && (!event->xexpose.count)) {
+            wsClearWindowParts(wsDisplay, wsWindowList[l]);
             wsWindowList[l]->DrawHandler();
+        }
 
         break;
 
    
    
More information about the MPlayer-cvslog
mailing list