Jassert in juce demo


#1

I’m getting an assert while running the demo
drag and drop demo, just dragging an element somewhere

the assert is

// if the component's not opaque, this won't draw properly unless the platform can support this jassert (Desktop::canUseSemiTransparentWindows() || component->isOpaque());

in juce_win32_Windowing.cpp line 1363

lastest git commit

without the assert I get access violation at line 275,
updateLayeredWindow is NULL because getprocaddress is never executed

I’ve tried a breakpoint in Desktop::canUseSemiTransparentWindows but I never reach it for some reason
I’m using vs2010 on winxp 64bit and I should have UpdateLayeredWindow in user32


#2

…maybe I’m being naive, but does that exist??


#3

…maybe I’m being naive, but does that exist??[/quote]
It does. Still in use by some composers with large sample libraries that haven’t gone over to Win7 yet (just for example).


#4

Ok… so can you see where it’s failing? Is it the GetModuleHandle or GetProcAddress that fails? In your installation perhaps the module is called “user64.dll” or something?


#5

still user32 but I’m compiling for 32bit, winxp 64 shares codebase with windows 2003

so think 32bit mode of windows xp 64 as like of windows 2003 32bit

I put a breakpoint in Desktop::canUseSemiTransparentWindows but it’s never reached


#6

The assertion can’t fail unless that function has returned false, so it must be getting called.


#7

I’ve finally found the problem:
juce_IsRunningInWine()

I had HKCU\Software\Wine because I ran reactos task manager, I never hit

HMODULE user32Mod = GetModuleHandle (_T("user32.dll")); updateLayeredWindow = (UpdateLayeredWinFunc) GetProcAddress (user32Mod, "UpdateLayeredWindow");

I hope there is better way to detect wine


#8

I think something like

bool juce_IsRunningInWine()
{
    HMODULE ntdllMod = GetModuleHandle (_T("ntdll.dll"));

    if (ntdllMod && GetProcAddress (ntdllMod, "wine_get_version"))
        return true;
    return false;
}

#9

Ah! I see… Thanks for chasing that up, and excellent suggestion, thank-you!