C&T difficulties (continued)

Search this archive.

From: Mike Grandin (mike@intrig.com)
Date: Wed 19 Dec 2001 - 01:02:16 IST


Unfortunately, my subscription has not yet gone through, otherwise this would
be under the C&T switching mode difficulties thread.  Sorry for the brief
repetition.

I've been switching modes with the C&T driver and a CT69000 based video
card.  Everything works fine except when I do a gl_fillbox to the
screen.  (BTW, this doesn't work under either svgalib-1.9.12 or
svgalib-1.4.3).

At this point the mode is G800x600x64K, we're in linear mode, and
clippingwindow is set to (0,0,799,599).  The system just seems to hang on the
call, not drawing the box to the screen.

However, if instead of doing gl_fillbox I do the following, everything
works  (or if I gl_fillbox to a non physical screen, no problem):

void fill_a_box(int x, int y, int w, int h, int c) {
   char *the_box ;
   int w_trav, h_trav;
   the_box = (char*) malloc(w*h*2);
   memset(the_box, 0, w*h*2);
   for ( h_trav = 0; h_trav < h; h_trav++) {
     for ( w_trav = 0; w_trav < w; w_trav++) {
       the_box[ 2*w*h_trav+2* w_trav]   = c%256;
       the_box[ 2*w*h_trav+2* w_trav+1] = c/256;
     }
   }
   gl_putbox( x, y, w, h, (void*)the_box);
//   hangs the system.. doesn't draw anything to the screen
//   gl_fillbox(x,y,w,h,c); 
}

I was hoping to get the gl_fillbox() call working.  I'm guessing in this case
gl_fillbox calls this? :

void __svgalib_CHIPS_hiqv_FillBox(int x, int y, int width, int height)
{
    int destaddr;

#ifdef DEBUG
    printf("CHIPS: hiqv_FillBox(%d, %d, %d, %d)\n", x, y, width, height);
#endif

    destaddr = BLTBYTEADDRESS(x, y);
    if (__svgalib_ctMMIOPage != -1) vga_setpage(__svgalib_ctMMIOPage);
    if (__svgalib_accel_mode & BLITS_IN_BACKGROUND)
        ctHIQVBLTWAIT;
    ctHIQVSETDSTADDR(destaddr);
    ctHIQVSETPITCH(0, __svgalib_accel_screenpitchinbytes);
    ctHIQVSETROP(ctAluConv2[ctROP&0xF] | ctHIQVTOP2BOTTOM | ctHIQVLEFT2RIGHT |
             ctHIQVPATSOLID | ctHIQVPATMONO);
    ctHIQVSETFGCOLOR(ctFGCOLOR);
    ctHIQVSETBGCOLOR(ctFGCOLOR);
    ctHIQVSETHEIGHTWIDTHGO(height,width*__svgalib_accel_bytesperpixel);
    if (!(__svgalib_accel_mode & BLITS_IN_BACKGROUND))
        ctHIQVBLTWAIT;
}

Any ideas as to what may be happening are greatly appreciated.

Thanks,
--
Mike Grandin

------------------------------------------------------------------
Unsubscribe:  To:   listbot@svgalib.org
              Body: unsubscribe linux-svgalib


This archive was generated by hypermail 2.1.4 : Wed 21 Jan 2004 - 22:10:24 IST