Difference for arch/ogl/glx.c from version 1.8 to 1.9


version 1.8 version 1.9
Line 1
 
Line 1
 //opengl platform specific functions for GLX - Added 9/15/99 Matthew Mueller  //opengl platform specific functions for GLX - Added 9/15/99 Matthew Mueller
 #include <X11/Xlib.h>  #include <X11/Xlib.h>
 #include <GL/glx.h>  #include <GL/glx.h>
   #include <string.h>
 #include "ogl_init.h"  #include "ogl_init.h"
 #include "vers_id.h"  #include "vers_id.h"
 #include "error.h"  #include "error.h"
 #include "event.h"  #include "event.h"
   #include "mono.h"
 #ifdef XFREE86_DGA  #ifdef XFREE86_DGA
 #include <X11/extensions/xf86dga.h>  #include <X11/extensions/xf86dga.h>
 #include <X11/extensions/xf86vmode.h>  #include <X11/extensions/xf86vmode.h>
Line 19
 
Line 21
 XVisualInfo *visinfo;  XVisualInfo *visinfo;
 GLXContext glxcontext;  GLXContext glxcontext;
 static int fullscreen=0;  static int fullscreen=0;
   Pixmap blankpixmap;
   Cursor blankcursor;
   
 int gr_check_fullscreen(void){  int gr_check_fullscreen(void){
  return fullscreen;   return fullscreen;
 }  }
 int gr_toggle_fullscreen(void){  void gr_do_fullscreen(int f){
  fullscreen^=1;   fullscreen=f;
  // grd_curscreen->sc_mode=0;//hack to get it to reset screen mode  
  if (gl_initialized){   if (gl_initialized){
  if (fullscreen){   if (fullscreen){
  XMoveWindow(dpy,win,0,0);   XMoveWindow(dpy,win,0,0);
   // XDefineCursor(dpy,win,blankcursor);
    //XGrabPointer(dpy,win,0,swa.event_mask,GrabModeAsync,GrabModeAsync,win,blankcursor,CurrentTime);
    XGrabPointer(dpy,win,1,ButtonPressMask | ButtonReleaseMask | PointerMotionMask,GrabModeAsync,GrabModeAsync,win,blankcursor,CurrentTime);
   // XGrabKeyboard(dpy,win,1,GrabModeAsync,GrabModeAsync,CurrentTime);//grabbing keyboard doesn't seem to do much good anyway.
   
 #ifdef XFREE86_DGA  #ifdef XFREE86_DGA
  //make fullscreen   //make fullscreen
  //can you even do this with DGA ?  just resizing with ctrl-alt-(-/+) caused X to die a horrible death.   //can you even do this with DGA ?  just resizing with ctrl-alt-(-/+) caused X to die a horrible death.
  //might have to kill the window/context/whatever first?  HRm.   //might have to kill the window/context/whatever first?  HRm.
 #endif  #endif
  }else{   }else{
   // XUndefineCursor(dpy,win);
    XUngrabPointer(dpy,CurrentTime);
   // XUngrabKeyboard(dpy,CurrentTime);
 #ifdef XFREE86_DGA  #ifdef XFREE86_DGA
  //return to normal   //return to normal
 #endif  #endif
  }   }
  }   }
   }
   int gr_toggle_fullscreen(void){
    gr_do_fullscreen(!fullscreen);
    // grd_curscreen->sc_mode=0;//hack to get it to reset screen mode
  return fullscreen;   return fullscreen;
 }  }
   
Line 70
 
Line 85
  glXMakeCurrent(dpy,win,glxcontext);   glXMakeCurrent(dpy,win,glxcontext);
   
  gl_initialized=1;   gl_initialized=1;
   
    {
    XColor blankcolor;
    unsigned char *blankdata;
    int w,h;
    XQueryBestCursor(dpy,win,1,1,&w,&h);
   // mprintf((0,"bestcursor %ix%i\n",w,h));
    blankdata=malloc(w*h/8);
    memset(blankdata,0,w*h/8);
    memset(&blankcolor,0,sizeof(XColor));
    blankpixmap=XCreateBitmapFromData(dpy,win,blankdata,w,h);
    blankcursor=XCreatePixmapCursor(dpy,blankpixmap,blankpixmap,&blankcolor,&blankcolor,w,h);
    free(blankdata);
   // sleep(1);
    }
   
    if (fullscreen)
    gr_do_fullscreen(fullscreen);
    }
 #ifdef GII_XWIN  #ifdef GII_XWIN
  init_gii_xwin(dpy,win);   init_gii_xwin(dpy,win);
 #endif  #endif
  if (fullscreen)  
  XMoveWindow(dpy,win,0,0);  
  }  
  return 0;   return 0;
 }  }
 void ogl_destroy_window(void){  void ogl_destroy_window(void){
Line 97
 
Line 128
  Error("no visual\n");   Error("no visual\n");
 }  }
 void ogl_close(void){  void ogl_close(void){
    gr_do_fullscreen(0);
  ogl_destroy_window();   ogl_destroy_window();
    XFreeCursor(dpy,blankcursor);
    XFreePixmap(dpy,blankpixmap);
  XCloseDisplay(dpy);   XCloseDisplay(dpy);
 }  }

Legend:
line(s) removed in v.1.8 
line(s) changed
 line(s) added in v.1.9