Re: [AD] DGA 2.0 driver completed |
[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]
From: Angelo Mottola <a.mottola@xxxxxxxxxx> Sent: Monday, September 25, 2000 10:24 AM > PS: while testing the Allegro example programs with my new driver, I found the > only one which crashes is ex3d; anyway I've discovered this example also crashes > with the Xwindows driver, so the problem is not with my code. It always crashes > if you select 8bit color, and when the cubes drawing mode is changed to > POLYTYPE_GRGB. If you start the example with hicolor depth, all drawing modes > run fine, but the program gives a segmentation fault once you exit it. I may be > wrong, but I guess the problem is with the new polygon routines added to Allegro > recently, as this example always worked for me with old lib versions... You're right ! I'm guilty : I noticed this bug a long time ago but I didn't realized it occured when the drawing mode was changed to POLYTYPE_GRGB ; I thought it was a random bug (under DJGPP ex3d behaviour - a segmentation fault when exiting - was the same whether the colordepth was 8 bits or higher). Moreover none of my own test programs crashed at all although they use the GRGB mode. Your mail has helped me a lot since it pointed out the GRGB case to be blamed. For the GRGB mode, the only difference between my routines and the old ones was the get[rgb]_depth(..) call : I did not understand why a call to 'bitmap_color_depth(bmp)' was made each time a 'get[rgb]_depth(..)' was called. So, I created a variable 'coldepth' which was set to bitmap_color_depth(bmp). Then I replaced each occurence of bitmap_color_depth(bmp) by 'coldepth'. It seems it was not a good idea at all So here is a small patch which set the get[rgb]_depth calls the way they were in the old version. Note : I can't test this patch under Linux (I can't have it yet cause my HD is full, I hope I will get it soon). So if ex3d keeps not working under Linux tell me, and if it works fine tell me too :-) I'm sorry... I'm a very bad boy... Bertrand. BTW can anyone can explain me why r=getr_depth(bitmap_color_depth(bmp), c); g=getg_depth(bitmap_color_depth(bmp), c); b=getb_depth(bitmap_color_depth(bmp), c); works fine while int coldepth = bitmap_color_depth(bmp); r=getr_depth(coldepth, c); g=getg_depth(coldepth, c); b=getb_depth(coldepth, c); gives a segmentation fault ????
Attachment:
grgbbug.diff
Description: Binary data
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |