[Lazarus] High-DPI TImageList

C Western l at c-m-w.me.uk
Mon Jan 29 23:22:36 CET 2018

On 29/01/18 22:10, C Western via Lazarus wrote:
> On 29/01/18 09:44, Ondrej Pokorny via Lazarus wrote:
>> On 29.01.2018 10:02, C Western via Lazarus wrote:
>>> On 29/01/18 08:45, Ondrej Pokorny via Lazarus wrote:
>>>> On 28.01.2018 15:33, C Western via Lazarus wrote:
>>>>> On 27/01/18 18:59, Ondrej Pokorny via Lazarus wrote:
>>>>>> I merged the High-DPI (multi-resolution) ImageList into trunk. 
>>>>>> I'll document the changes in 
>>>>>> http://wiki.lazarus.freepascal.org/TImageList soon (tomorrow) and 
>>>>>> also in http://wiki.freepascal.org/Lazarus_1.10.0_release_notes
>>>>>> Ondrej
>>>>> With trunk my application now gives lots of tracebacks when using 
>>>>> the main menu, which has some images set, though not using an 
>>>>> imagelist:
>>>>> ERROR in LCL: TGtk2WidgetSet.CreateBitmapFromRawImage Incompatible 
>>>>> BitsPerPixel
>>>>> Creating gdb catchable error:
>>>>>   $000000000088BA69  DEBUGLNSTACK,  line 731 of lazloggerbase.pas
>>>>>   $00000000007788E0  DUMPSTACK,  line 1392 of lclproc.pas
>>>>>   $0000000000776043  RAISEGDBEXCEPTION,  line 860 of lclproc.pas
>>>>>   $00000000006EB170  RAWIMAGE_CREATEBITMAPS,  line 417 of 
>>>>> gtk2/gtk2lclintf.inc
>>>>>   $0000000000787202  RAWIMAGE_CREATEBITMAPS,  line 152 of 
>>>>> include/lclintf.inc
>>>>>   $00000000008F0FF0  CREATEBITMAPS,  line 3633 of intfgraphics.pas
>>>>>   $000000000095B362  INSERTMASKED,  line 1802 of include/imglist.inc
>>>>>   $0000000000958DC1  ADDMASKED,  line 1143 of include/imglist.inc
>>>>>   $000000000086717C  DRAWMENUITEMICON,  line 5809 of gtk2
>>>>> This is using GTK2. Has the implementation of the main menu changed 
>>>>> significantly? Unfortunately this is slightly tricky to debug, as 
>>>>> the entire desktop freezes.
>>>> Do you use Glyphs in the menu? Anyway, please create a bug report 
>>>> and if possible, attach a sample project to reproduce. Thanks.
>>> I do use glyphs on a few of the menu items. Unfortunately a small 
>>> project with just this doesn't show the error, so a sample project 
>>> will require some thought.
>> I assume it's a specific glyph that doesn't work. Try to add a DebugLn 
>> with the menu item name into DRAWMENUITEMICON so that you'll know what 
>> menu item and glyph causes it.
>> Ondrej
> I have submitted https://bugs.freepascal.org/view.php?id=33099
> It does not show the crash, but it does show some issues. My 
> investigations show that the test program does not crash in the same way 
> as Masked is false for the menu image, whereas it is true in my full 
> program, and I haven't been able to track down why yet.
> Colin

Update: I found my main program had some code I had forgotten about that 
explicitly sets transparent for each menu bitmap:
    MenuItem2.Bitmap.Transparent := True;
and that is why the error is triggered in my main program. (The need to 
do this may be a bug, but if so it has been present for a long time.)


More information about the Lazarus mailing list