kbuffington / Georgia

Dynamic foobar2000 theme
286 stars 16 forks source link

Jscript panel crash when scrolling the playlist quickly on a 4K screen #11

Closed Artins90 closed 5 years ago

Artins90 commented 5 years ago

Error: JScript Panel v2.1.4 (Georgia by Mordred) JavaScript runtime error: LogicError: first_item_to_draw can't be null!

File: E:\Users\Artins\Desktop\foobar2000\georgia\js\CaTRoX_QWR\Common.js Line: 262, Col: 9

I can replicate this crash every time, just grab the scroll bar and pull it down quickly. Probably the play list needs to include a large enough number of albums, 50 albums should suffice.

kbuffington commented 5 years ago

I literally just released an updated version which I think fixes this problem. Let me know if it goes away after you update.

Artins90 commented 5 years ago

I tried to load it but it's returning the following error upon launching foobar, the skin doesn't load:

JScript Panel v2.2.2.2 (Georgia by Mordred) JavaScript runtime error: Unable to get property 'paint' of undefined or null reference File: C:\Program Files\foobar2000\georgia\js\CaTRoX_QWR\Panel_Playlist.js Line: 753, Col: 13

kbuffington commented 5 years ago

Wild. For now, you can stop that error from occurring by going into the properties and changing Display playlist on startup to false. I'll figure out how to stop that from happening soon.

kbuffington commented 5 years ago

If you really want to keep that option selected, go to line 1549 of georgia-main.js and add this code block:

    if (pref.start_Playlist) {
        displayPlaylist = false;
        setTimeout(function () {
            displayPlaylist = true;
            playlist.on_size(ww, wh);
            RepaintWindow();
        },30);
    }

That'll be the fix included in v1.1.1, unless I can find something better.

Artins90 commented 5 years ago

Thank you for the hotfix, I was able to load the skin after adding the code. The bad news is that I got a new error after starting the playback of a song: JScript Panel v2.2.2.2 (Georgia by Mordred) JavaScript runtime error: Unable to get property 'setColors' of undefined or null reference File: C:\Program Files\foobar2000\georgia\js\themes.js Line: 101, Col: 5

kbuffington commented 5 years ago

That's weird. I can't reproduce. Are you using embedded artwork? Is this a streaming source?

Replace line 101 with this and see if it works then:

    if (str.timeline) {
        str.timeline.setColors(theme.darkAccent, theme.accent, theme.lightAccent);
    }

You might have issues with the timeline colors being off though.

Artins90 commented 5 years ago

They are flac files from the local HDD. There are some tracks with embedded artworks but it happens even when playing tracks without any.

The second hotfix fixed the issue and timeline colors look ok. I am going to attach my entire foobar folder, it's in portable mode. I uploaded it before applying the second hotfix you provided, so it should crash when you hit play, it might help you replicate and identify the issue.

The scrollbar issue is gone so I think we can close this one. We can continue to discuss the crashing issue when playing a track in the issue report #12

foobar2000.zip

kbuffington commented 5 years ago

Thanks for the zip. I was able to reproduce this with embedded artwork, and ALSO with regular artwork when stopping play. Just triple checking the fixes to make sure things are kosher.