AC6.23: Bug when changing skin from secondary from

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #39319
    Support
    Keymaster

    Mixture occurs when animating working seems. You can try to disable animation and look…
    And thank you for the demo, I'll research it soon.

    #39325
    OldGrumpy
    Participant

    Meanwhile I did some more research and I think there are two independent bugs. One is demonstrated in the sample project, the other one occurs in my main app only.

    I am not sure how the second bug is triggered but it has definitely to do with switching skins. When I switch skins in my main app (done from a secondary dialog, not the main dialog like in the Alphaskin demo), the secondary dialog is visible but not modal. Immediately after switching the skin some repaint occurs and during that TsScrollBox.WMNCPaint() is called at a time where FCommonData.FCacheBmp is nil. This isn't checked and there is another branch in that function that explicitly sets it to nil… So I guess we're facing some kind of race condition. I set a breakpoint at that line (line 326) with the condition set to only break when FCacheBmp is nil. It doesn't break there until the skin is switched at runtime, and everytime after that again. So I guess something goes wrong during switching the skin.

    #39336
    Support
    Keymaster

    Thank you for additional information.
    Your second form (where skin is selected) must have not a skinning?
    If SkinProvider is placed there then I do not see a problem…
    In the your application this form haven't TsSkinProvider component too?

    #39339
    OldGrumpy
    Participant

    QUOTE (Support @ May 25 2009, 02:32 PM)
    Thank you for additional information.
    Your second form (where skin is selected) must have not a skinning?
    If SkinProvider is placed there then I do not see a problem…
    In the your application this form haven't TsSkinProvider component too?

    The second form is skinned, too. It has the same skin as the main form. Do I understand this right, each form needs a TsSkinProvider placed on it? My app looks basically like this:

    TMainForm (has TsSkinManager and TsSkinProvider on it)
    TSettingsForm (has no Manager and no Provider)

    CODE
    TSettingsForm.sCombobox1OnChange(Sender : TObject);
    Begin
      TMainForm.sSkinManager1.SkinName:=sCombobox1.Items[sCombobox1.ItemIndex];
    End;

    All Forms look skinned properly, i just noticed that something makes the sScrollbox code break as mentioned before. The breakpoint I set in line 326 is never triggered before changing the skin from the SettingsDlg, and gets triggered again and again afterwards. This makes me think that something caused that the two code branches are no longer synchronized properly. I added code to create a bitmap if it is missing, but I fear this could create a resource leak instead. I haven't had time to debug everything thoroughly. I could not reproduce this effect with code changes to the demo application, though. There has to be a very complex connection…

    #39343
    Support
    Keymaster

    Thank you, I'm in researching and problem will be solved soon.

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.