From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- pipermail/nel/2001-February/000293.html | 305 ++++++++++++++++++++++++++++++++ 1 file changed, 305 insertions(+) create mode 100644 pipermail/nel/2001-February/000293.html (limited to 'pipermail/nel/2001-February/000293.html') diff --git a/pipermail/nel/2001-February/000293.html b/pipermail/nel/2001-February/000293.html new file mode 100644 index 00000000..de2c505e --- /dev/null +++ b/pipermail/nel/2001-February/000293.html @@ -0,0 +1,305 @@ + + + + [Nel] Linux fullscreen patches + + + + + + +

[Nel] Linux fullscreen patches

+ Leighton Haynes + dayta@ucc.gu.uwa.edu.au
+ Wed, 28 Feb 2001 20:16:17 +0800 +

+
+ +
--vkogqOf2sHV7VnPd
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+
+Hi Guys,
+    Attached to this should be 3 diffs against the current cvs tree
+    to enable fullscreen under linux using the XFree86 VidMode
+    extensions. The aptches are for the configure.in script, 
+    and driver_opengl.{cpp,h}.
+
+    To enable it you need to remake the configure script (./bootstrap)
+    and run configure with the --with-xf86vidmode=<position of the 
+    Xxf86vm lib> - usually /usr/X11R6/lib. If this option isn't given, 
+    it will currently compile without fullscreen support.
+
+    Anyhow, have a play, if anyone finds bugs... erm.. bug me ;)
+
+Leighton...
+
+--
+
+Part-time student. Full-time Programmer. 
+Seeking the 36 hour day and the 10 hour working week.
+(08) 9272 9058 (Home - like I'm ever there)
+0401 335 136 (Mobile - like it's ever on)
+
+--vkogqOf2sHV7VnPd
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename="diff.configure.in"
+
+Index: configure.in
+===================================================================
+RCS file: /home/cvsroot/code/nel/configure.in,v
+retrieving revision 1.23
+diff -r1.23 configure.in
+232a233,251
+> dnl ============================================
+> dnl Check for XF86VidMode extension (-lXxf86vm)
+> dnl ============================================
+> AC_MSG_CHECKING("for XF86VidMode extension")
+> AC_ARG_WITH( xf86vidmode,
+>     [ --with-xf86vidmode=<path>     path to the XF86VidMode lib.
+>                           e.g. /usr/X11R6/lib],
+>     [VMLIB_DIR=$with_xf86vidmode
+>       AC_MSG_RESULT(using VidMode library located in $with_xf86vidmode.)],
+>     AC_MSG_RESULT(Compiling without Xf86VidMode and hence fullscreen support to compile with XF86VidMode support, use --with-xf86vidmode=<pathtolib>)
+> )
+> 
+> if test X"$VMLIB_DIR" != X;
+> then
+>     LIBS="-L$VMLIB_DIR -lXxf86vm $LIBS";
+>     CXXFLAGS="$CXXFLAGS -DXF86VIDMODE";
+> fi
+> 
+> 
+
+--vkogqOf2sHV7VnPd
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename="diff.driver_opengl.cpp"
+
+Index: driver_opengl.cpp
+===================================================================
+RCS file: /home/cvsroot/code/nel/src/3d/driver/opengl/driver_opengl.cpp,v
+retrieving revision 1.75
+diff -r1.75 driver_opengl.cpp
+140d139
+< 	_FullScreen= false;
+144c143,149
+< #endif // NL_OS_WINDOWS
+---
+> #elif defined (NL_OS_UNIX) // NL_OS_WINDOWS
+> #ifdef XF86VIDMODE
+>     memset(&_OldScreenMode,0,sizeof(_OldScreenMode));// zero the old screen mode
+> #endif //XF86VIDMODE
+> #endif
+> 
+> 	_FullScreen= false;
+225a231
+>         {
+226a233
+>         }
+351c358
+< 	  {
+---
+>     {
+353c360
+< 	  }
+---
+>     }
+355c362
+< 	  {
+---
+>     {
+357c364
+< 	  }
+---
+>     }
+364c371,385
+< 	attr.override_redirect = False;
+---
+> #ifdef XF86VIDMODE
+>     // If we're going to attempt fullscreen, we need to set redirect to True,
+>     // This basically places the window with no borders in the top left 
+>     // corner of the screen.
+>     if (mode.Windowed)
+>     {
+>         attr.override_redirect = False;
+>     }
+>     else
+>     {
+> 	    attr.override_redirect = True;
+>     }
+> #else
+>     attr.override_redirect = False;
+> #endif
+409,411c430,507
+< //	XEvent event;
+< //	XIfEvent(dpy, &event, WaitForNotify, (char *)this);
+< 
+---
+> #ifdef XF86VIDMODE
+>     if (!mode.Windowed)
+>     {
+>     
+>         // Set window to the right size, map it to the display, and raise it
+>         // to the front
+>         XResizeWindow(dpy,win,mode.Width,mode.Height);
+>         XMapRaised(dpy,win);
+>         XRaiseWindow(dpy, win);
+> 
+>         // grab the mouse and keyboard on the fullscreen window 
+>         if ((XGrabPointer(dpy, win, True, 0,
+>                           GrabModeAsync, GrabModeAsync,
+>                           win, None, CurrentTime) != GrabSuccess) ||
+>             (XGrabKeyboard(dpy, win, True,
+>                           GrabModeAsync, GrabModeAsync, CurrentTime) != 0) )
+>         {
+>             // Until I work out how to deal with this nicely, it just gives
+>             // an error and exits the prorgam.
+>             nlerror("Unable to grab keyboard and mouse\n");
+>         }
+>         else
+>         {
+>             // Save the old screen mode and dotclock
+>             memset(&_OldScreenMode, 0, sizeof(_OldScreenMode));
+>             XF86VidModeGetModeLine(dpy, 
+>                                    DefaultScreen(dpy),
+>                                    &_OldDotClock,
+>                                    &_OldScreenMode);
+>             // Save the old viewport
+>             XF86VidModeGetViewPort(dpy, 
+>                                    DefaultScreen(dpy),
+>                                    &_OldX,
+>                                    &_OldY);
+>     
+>             // get a list of modes, search for an appropriate one.
+>             XF86VidModeModeInfo **modes;
+>             int nmodes;
+>             if (XF86VidModeGetAllModeLines(dpy,
+>                                            DefaultScreen(dpy),
+>                                            &nmodes,&modes))
+>             {
+>                 int mode_index = -1; // Gah, magic numbers all bad. 
+>                 for (int i = 0; i < nmodes; i++)
+>                 {
+>                     nldebug("Available mode - %dx%d\n",mode.Width,mode.Height);
+>                     if( (modes[i]->hdisplay == mode.Width) &&
+>                         (modes[i]->vdisplay == mode.Height))
+>                     {
+>                         mode_index = i;
+>                     }
+>                 }
+>                 // Switch to the mode
+>                 if (mode_index != -1)
+>                 {
+>                     if(XF86VidModeSwitchToMode(dpy,
+>                                                DefaultScreen(dpy), 
+>                                                modes[mode_index]))
+>                     {
+>                         nlinfo("Switching to mode %dx%d,\n",mode.Width, 
+>                                                             mode.Height);
+>                         XF86VidModeSetViewPort(dpy,DefaultScreen(dpy),0, 0);
+>                         _FullScreen = true;
+>                     }
+>                 }
+>                 else
+>                 {
+>                     // This is a problem, since we've nuked the border from 
+>                     // window in the setup stage, until I work out how
+>                     // to get it back (recreate window? seems excessive)
+>                     nlerror("Couldn't find an appropriate mode %dx%d\n",
+>                                                                 mode.Width,
+>                                                                 mode.Height);
+>                 }
+>             }
+>         }
+>     }
+> #endif // XF86VIDMODE
+659c755,776
+< #endif // NL_OS_WINDOWS
+---
+> #elif defined (NL_OS_UNIX)// NL_OS_WINDOWS
+> 
+> #ifdef XF86VIDMODE
+>     if(_FullScreen)
+>     {
+>         XF86VidModeModeInfo info;
+>         nlinfo("Switching back to original mode \n");
+> 
+>         // This is a bit ugly - a quick hack to copy the ModeLine structure 
+>         // into the modeInfo structure.
+>         memcpy((XF86VidModeModeLine *)((char *)&info + sizeof(info.dotclock)), &_OldScreenMode, sizeof(XF86VidModeModeLine));
+>         info.dotclock = _OldDotClock;
+> 
+>         nlinfo("Mode is %dx%d,\n",info.hdisplay,info.vdisplay);
+>         XF86VidModeSwitchToMode(dpy,DefaultScreen(dpy),&info);
+>         nlinfo("Switching viewporr to %d,%d,\n",_OldX, _OldY);
+>         XF86VidModeSetViewPort(dpy,DefaultScreen(dpy),_OldX,_OldY);
+>         // Ungrab the keyboard (probably not necessary);
+>         XUngrabKeyboard(dpy, CurrentTime);
+>     }
+> #endif // XF86VIDMODE
+> #endif // NL_OS_UNIX
+
+--vkogqOf2sHV7VnPd
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: attachment; filename="diff.driver_opengl.h"
+
+Index: driver_opengl.h
+===================================================================
+RCS file: /home/cvsroot/code/nel/src/3d/driver/opengl/driver_opengl.h,v
+retrieving revision 1.50
+diff -r1.50 driver_opengl.h
+40a41
+> #include <X11/extensions/xf86vmode.h>
+219a221
+> 	bool						_FullScreen;
+230d231
+< 	bool						_FullScreen;
+238a240,244
+> //#ifdef XF86VIDMODE
+>     int                         _OldDotClock;   // old dotclock
+>     XF86VidModeModeLine         _OldScreenMode; // old modeline
+>     int                         _OldX, _OldY;   //Viewport settings
+> //#endif //XF86VIDMODE
+240d245
+< 
+
+--vkogqOf2sHV7VnPd--
+
+
+ + + + + + + + + + + + + + +
+

+ -- cgit v1.2.1