Difference for arch/linux/svgalib/gr.c from version 1.1 to 1.2


version 1.1 version 1.2
Line 2
 
Line 2
 #include <stdio.h>  #include <stdio.h>
 #include <string.h>  #include <string.h>
 #include <vga.h>  #include <vga.h>
   #include <vgagl.h>
 #include "gr.h"  #include "gr.h"
 #include "grdef.h"  #include "grdef.h"
 #include "palette.h"  #include "palette.h"
 #include "u_mem.h"  #include "u_mem.h"
 #include "error.h"  #include "error.h"
   #ifdef SVGALIB_INPUT
   #include <vgamouse.h>
   #endif
   
 int gr_installed = 0;  int gr_installed = 0;
   int usebuffer;
   
   extern void mouse_handler (int button, int dx, int dy, int dz, int drx, int dry, int drz);
   
   GraphicsContext *physicalscreen, *screenbuffer;
   
 void gr_update()  void gr_update()
 {  {
 //added 05/19/99 Matt Mueller - locking stuff   if (usebuffer)
 // gr_testunlock();   gl_copyscreen(physicalscreen);
 //end addition -MM  
 }  }
   
 int gr_set_mode(int mode)  int gr_set_mode(int mode)
 {  {
  unsigned int w, h, r, t;   unsigned int w, h, r;
  char vgamode[16];   char vgamode[16];
  vga_modeinfo *modeinfo;   vga_modeinfo *modeinfo;
    int modenum, rowsize;
    void *framebuffer;
    
 #ifdef NOGRAPH  #ifdef NOGRAPH
  return 0;   return 0;
Line 60
 
Line 70
  gr_palette_clear();   gr_palette_clear();
   
  sprintf(vgamode, "G%dx%dx256", w, h);   sprintf(vgamode, "G%dx%dx256", w, h);
  vga_setmode(vga_getmodenumber(vgamode));   modenum = vga_getmodenumber(vgamode);
  modeinfo = vga_getmodeinfo(vga_getmodenumber(vgamode));   vga_setmode(modenum);
   #ifdef SVGALIB_INPUT
    mouse_seteventhandler(mouse_handler);
   #endif
    modeinfo = vga_getmodeinfo(modenum);
   
  if (modeinfo->flags & IS_MODEX)   if (modeinfo->flags & CAPABLE_LINEAR)
  t = BM_MODEX;   {
    usebuffer = 0;
    vga_setlinearaddressing();
    framebuffer = vga_getgraphmem();
    rowsize = modeinfo->linewidth;
    }
  else   else
  t = BM_LINEAR;   {
    usebuffer = 1;
    gl_setcontextvga(modenum);
    physicalscreen = gl_allocatecontext();
    gl_getcontext(physicalscreen);
    gl_setcontextvgavirtual(modenum);
    screenbuffer = gl_allocatecontext();
    gl_getcontext(screenbuffer);
   
    framebuffer = screenbuffer->vbuf;
    rowsize = w;
    }
   
  memset(grd_curscreen, 0, sizeof(grs_screen));   memset(grd_curscreen, 0, sizeof(grs_screen));
  grd_curscreen->sc_mode = mode;   grd_curscreen->sc_mode = mode;
Line 77
 
Line 107
  grd_curscreen->sc_canvas.cv_bitmap.bm_y = 0;   grd_curscreen->sc_canvas.cv_bitmap.bm_y = 0;
  grd_curscreen->sc_canvas.cv_bitmap.bm_w = w;   grd_curscreen->sc_canvas.cv_bitmap.bm_w = w;
  grd_curscreen->sc_canvas.cv_bitmap.bm_h = h;   grd_curscreen->sc_canvas.cv_bitmap.bm_h = h;
  grd_curscreen->sc_canvas.cv_bitmap.bm_rowsize = r;   grd_curscreen->sc_canvas.cv_bitmap.bm_rowsize = rowsize;
  grd_curscreen->sc_canvas.cv_bitmap.bm_type = t;   grd_curscreen->sc_canvas.cv_bitmap.bm_type = BM_LINEAR;
  grd_curscreen->sc_canvas.cv_bitmap.bm_data = (unsigned char *)vga_getgraphmem();   grd_curscreen->sc_canvas.cv_bitmap.bm_data = framebuffer;
  gr_set_current_canvas(NULL);   gr_set_current_canvas(NULL);
  return 0;   return 0;
 }  }
   
 void modex_setplane(int plane)  
 {  
  if (plane < 0 || plane > 3)  
  return;  
  port_out(0x02, 0x3C4);  
  port_out(1 << plane, 0x3C5);  
 }  
   
 int gr_init(int mode)  int gr_init(int mode)
 {  {
  int retcode;   int retcode;
Line 102
 
Line 124
  memset(grd_curscreen, 0, sizeof(grs_screen));   memset(grd_curscreen, 0, sizeof(grs_screen));
    
  vga_init();   vga_init();
  vga_setlinearaddressing();  
   
  if ((retcode=gr_set_mode(mode)))   if ((retcode=gr_set_mode(mode)))
  return retcode;   return retcode;
Line 125
 
Line 146
  {   {
  gr_installed = 0;   gr_installed = 0;
  free(grd_curscreen);   free(grd_curscreen);
    gl_freecontext(screenbuffer);
    gl_freecontext(physicalscreen);
  }   }
 }  }
   

Legend:
line(s) removed in v.1.1 
line(s) changed
 line(s) added in v.1.2