Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!pasteur!ucbvax!hplabs!hpfcdc!hpldola!jg From: jg@hpldola.HP.COM (Joe Gilray) Newsgroups: comp.sys.atari.st Subject: Re: shadow buffering Message-ID: <11830023@hpldola.HP.COM> Date: 16 Jan 89 21:06:32 GMT References: <11830022@hpldola.HP.COM> Organization: HP Elec. Design Div. -ColoSpgs Lines: 41 I tried out the shadow buffer this weekend, after negotiating with my 5 month-old for an hour off. I proceeded as follows: /* Step 1. set up two logical screens */ logscr1 = Logbase(); logscr2 = (char *)[32000 byte block aligned on 256 byte boundary] /* Step 2. whenever drawing to the screen draw to both logical screens */ Setscreen(logscr2, -1L, -1); draw (v_bar, v_gtext, etc) Setscreen(logscr1, -1L, -1); draw (v_bar, v_gtext, etc) /* Step 3. when a REDRAW event is received blit from logscr2 to */ /* physical screen using vro_cpyfm(). */ Steps 1 & 3 seem to be ok. Step 3 will eventually consist of changing the physical screen pointer to logscr2 then blitting to logscr1 which will take the place of logscr2 (become the shadow buffer) for subsequent operations. Step 2 is causing two problems right now: Problem 2a. When things are drawn with the AES routine objc_draw() as in the following, the system crashes with two or three bombs. Setscreen(logscr2, -1L, -1); objc_draw(...); Setscreen(logscr1, -1L, -1); objc_draw(...); Problem 2b. certain items are not being drawn at all (to either logical screen). Do I need to call Vsync() after each Setscreen? This doesn't seem to make sense to me as the Setscreen calls are not affecting the physical screen at all. Thanks for any help. Joe Gilray