[ros-dev] [ros-diffs] [greatlrd] 33783: revert my last change
Aleksey Bragin
aleksey at reactos.org
Sun Jun 1 09:54:14 CEST 2008
And even more, James, there are live real cases during reactos start
up process that DIB_GetDIBWidthBytes is called with negative width.
WBR,
Aleksey Bragin.
On Jun 1, 2008, at 1:31 AM, James Tabor wrote:
> OMG!
>
> eng/surface.c:149: NewBitmap = EngCreateBitmap(Size,
> DIB_GetDIBWidthBytes(Size.cx, BitsPerFormat(Format)), Format, 0,
> NULL);
>
> Are you all aware that DIB_GetDIBWidthBytes is called again in
> IntCreateBitmap? Follow the flow.
>
> No wonder bitmaps is fubared!
>
> Please someone fix this!
> James
>
>
> On Sat, May 31, 2008 at 1:41 PM, James Tabor
> <jimtabor.rosdev at gmail.com> wrote:
>> Hi!
>> I checked this and it is all wrong,,,,, I reverted part of
>> revision 19267:
>>
>> Replacing the code with the original wine code that behaves like
>> "Windows code" but should be called inside EngCreateBitmap if
>> (pvBits)
>> Width = DIB_GetDIBWidthBytes( lWidth, iFormat); .
>>
>> As it should be:
>>
>> INT FASTCALL DIB_GetDIBWidthBytes (INT width, INT depth)
>> {
>> // return ((width * depth + 31) & ~31) >> 3;
>> int words;
>>
>> switch(depth)
>> {
>> case 1: words = (width + 31) / 32; break;
>> case 4: words = (width + 7) / 8; break;
>> case 8: words = (width + 3) / 4; break;
>> case 15:
>> case 16: words = (width + 1) / 2; break;
>> case 24: words = (width * 3 + 3)/4; break;
>>
>> default:
>> DPRINT1("(%d): Unsupported depth\n", depth );
>> /* fall through */
>> case 32:
>> words = width;
>> }
>> return 4 * words;
>> }
>>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
More information about the Ros-dev
mailing list