http://bugs.winehq.com/show_bug.cgi?id=412
*** shadow/412 Sun Jan 27 05:51:19 2002 --- shadow/412.tmp.22974 Mon May 20 09:06:55 2002 *************** *** 7,16 **** | Severity: normal OS/Version: All | | Priority: P1 Component: wine-gdi | +----------------------------------------------------------------------------+ ! | Assigned To: bugs@codeweavers.com | | Reported By: ye_zong_hui@yahoo.com.cn | | CC list: Cc: | +----------------------------------------------------------------------------+ | URL: | +============================================================================+ | DESCRIPTION | --- 7,17 ---- | Severity: normal OS/Version: All | | Priority: P1 Component: wine-gdi | +----------------------------------------------------------------------------+ ! | Assigned To: wine-bugs@winehq.com | | Reported By: ye_zong_hui@yahoo.com.cn | | CC list: Cc: | +----------------------------------------------------------------------------+ + | Milestone: TargetMilestone: --- | | URL: | +============================================================================+ | DESCRIPTION | *************** *** 243,245 **** --- 244,272 ----
------- Additional Comments From ye_zong_hui@yahoo.com.cn 2002-01-27 05:50 ------- *** This bug has been confirmed by popular vote. *** + + ------- Additional Comments From bon@elektron.ikp.physik.tu-darmstadt.de 2002-05-20 09:06 ------- + The Helio Emulator emulator (source is available) uses the depreciate + SetBitmapBits() function, what probably exposes an error in our DIB handling. + + First a 4 bit DIBSection is created: + lpbi->bmiHeader.biPlanes = 1; + lpbi->bmiHeader.biBitCount = 4; + .. + PVOID pvBits; + m_hbmLCD = CreateDIBSection(hdc, lpbi, DIB_RGB_COLORS, &pvBits, NULL, 0 ); + + Later the real data is set: + HDC hdcLCD = CreateCompatibleDC(hdc); + HBITMAP hbmOld = (HBITMAP) SelectObject(hdcLCD, m_hbmLCD); + SetBitmapBits(m_hbmLCD, LCD_WIDTH*LCD_HEIGHT/2, m_abLCDBits); + StretchBlt(hdc, m_rcScrn.left, m_rcScrn.top, cxScrn, cyScrn, hdcLCD, 0, 0, + LCD_WIDTH, LCD_HEIGHT, SRCCOPY); + SelectObject(hdcLCD, hbmOld); + DeleteDC(hdcLCD); + + Now the four bit data given is handled as 24 bit data which was used for the + bitmap during CreateDIBSection and the display is wrong. I think we need to use + SetDIBits somehow, but I don't know how. + + Bye \ No newline at end of file