JUCE v3.2.0 and v4.0.1 apps window is not visible in scaled monitor resolutions

i am not able to run properly the JUCE apps that i compile based on the JUCE from github - the apps launch and the console output indicates the program is running as expected but yet the GUI does not appear - the app has a taskbar entry however and if i right-click this selecting "maximize" the JUCE window titlebar appears (only the titlebar) and am able to close the app gracefully using its "X" button

ive added below the output from Introjucer but this is also the case for my apps and the "HelloWorld" example but i can not even make the titlebar appears for the others

curiously i installed the same system (from the same .iso) a few days earlier in virtualbox and the apps i compile work correctly

also curiously the Introjucer binary in fabian's PPA does run correctly on the same system but it produces no console ouput so I am not sure which JUCE version it was compiled with - it does prompt on startup "Download JUCE 3.2.0?" so it is obviously an older build

all of the JUCE dependencies are satisfied as listed in http://www.juce.com/forum/topic/list-juce-dependencies-under-ubuntu-linux

  * g++
  * libfreetype6-dev
  * libx11-dev
  * libxinerama-dev
  * libxcursor-dev
  * mesa-common-dev
  * libasound2-dev
  * libjack-jackd2-dev
  * freeglut3-dev
  * libxcomposite-dev
  * libxrandr-dev (supplies libxrender-dev)
  * libcurl4-openssl-dev

Introjucer console output:

$ ./build/Introjucer
JUCE v3.2.0

**********************************************************
Introjucer 3.2.0  ---  Build date: Sep 16 2015
Log started: 16 Sep 2015 9:52:39pm

ERROR: X returned BadValue (integer parameter out of range for operation) for operation X_ConfigureWindow
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_Component.cpp:1286
JUCE Assertion failure in juce_ResizableWindow.cpp:237
JUCE Assertion failure in juce_ResizableWindow.cpp:238
ERROR: X returned BadValue (integer parameter out of range for operation) for operation X_ConfigureWindow
JUCE Assertion failure in juce_ResizableWindow.cpp:238
JUCE Assertion failure in juce_ResizableWindow.cpp:237
JUCE Assertion failure in juce_ResizableWindow.cpp:238
ERROR: X returned BadValue (integer parameter out of range for operation) for operation X_ConfigureWindow
JUCE Assertion failure in juce_ResizableWindow.cpp:238
JUCE Assertion failure in juce_ResizableWindow.cpp:237
JUCE Assertion failure in juce_ResizableWindow.cpp:238
ERROR: X returned BadValue (integer parameter out of range for operation) for operation X_ConfigureWindow
JUCE Assertion failure in juce_ResizableWindow.cpp:238
Shutdown

The Ubuntu packages are a bit old. If you download JUCE from here or run the auto-updater, it includes a pre-built version of the Introjucer in the root folder of JUCE. Can you test this version of the Introjucer? Does this open any windows?

i stopped downloading the tarball yaers ago because the introjucer binary did not run on 32-bit machines so i got in the habit of compiling it myself and this is just simpler to clone the github repo

i just tried the tarball again on this system and the result is much the same

firstly the introjucer binary still does not run at all

secondly i noticed a warning building introjucer:

Compiling juce_gui_basics.cpp
In file included from ../../../../modules/juce_gui_basics/juce_gui_basics.cpp:245:0:
../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp: In member function ‘void juce::AlertWindow::updateLayout(bool)’:
../../../../modules/juce_gui_basics/windows/juce_AlertWindow.cpp:346:18: warning: declaration of ‘lookAndFeel’ shadows a member of 'this' [-Wshadow]
     LookAndFeel& lookAndFeel = getLookAndFeel();
                  ^

but most importantly the introjucer i compiled from the tartball also launches but has no visible window - and like the other apps i compile i can not even get the titlebar on this build

as an update to this issue - i just compiled an older app that includes JUCE v3.1.1 and it there is no problem

i will just revert my git repo back to v3.1.1 for now to get this new app running but i would be glad to help debug this so that i (and undoubtedly others) are not locked at this version

 

 

 

Can you give me line number of the assert on the newest tip by running it with gdb? That would help us immensely! Thanks!

  

$ gdb ./Introjucer
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
....
This GDB was configured as "i686-linux-gnu".
....
Reading symbols from ./Introjucer...done.

(gdb) run
Starting program: /code/JUCE/extras/Introjucer/Builds/Linux/build/Introjucer
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Traceback (most recent call last):
  File "/usr/share/gdb/auto-load/usr/lib/i386-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
JUCE v3.2.0

**********************************************************
Introjucer 3.2.0  ---  Build date: Sep 12 2015
Log started: 17 Sep 2015 9:22:27am

[New Thread 0xb723fb40 (LWP 569)]
ERROR: X returned BadValue (integer parameter out of range for operation) for operation X_ConfigureWindow
JUCE Assertion failure in juce_Component.cpp:1286

Program received signal SIGTRAP, Trace/breakpoint trap.
0xb7fdd428 in __kernel_vsyscall ()

(gdb) backtrace
#0  0xb7fdd428 in __kernel_vsyscall ()
#1  0xb7a7d956 in kill () at ../sysdeps/unix/syscall-template.S:81
#2  0x0833ad3b in juce::Component::setBoundsToFit (this=0x86ea1b8, x=0, y=0, width=0, height=0,
    justification=..., onlyReduceInSize=false)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1286
#3  0x081df17a in NewProjectWizardClasses::TemplateOptionButton::resized (this=0x86ea000)
    at ../../Source/Wizards/jucer_TemplateThumbnailsComponent.h:108
#4  0x0833a743 in juce::Component::sendMovedResizedMessages (this=0x86ea000, wasMoved=false,
    wasResized=true) at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1183
#5  0x0833a6ca in juce::Component::sendMovedResizedMessagesIfPending (this=0x86ea000)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1165
#6  0x0833a662 in juce::Component::setBounds (this=0x86ea000, x=50, y=70, w=0, h=0)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1151
#7  0x0833a9ea in juce::Component::setBounds (this=0x86ea000, r=...)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1229
#8  0x081dfbd4 in NewProjectWizardClasses::TemplateTileBrowser::resized (this=0x86e9ed8)
    at ../../Source/Wizards/jucer_TemplateThumbnailsComponent.h:206
#9  0x0833a743 in juce::Component::sendMovedResizedMessages (this=0x86e9ed8, wasMoved=false,
    wasResized=true) at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1183
#10 0x0833a6ca in juce::Component::sendMovedResizedMessagesIfPending (this=0x86e9ed8)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1165
#11 0x0833a662 in juce::Component::setBounds (this=0x86e9ed8, x=0, y=0, w=0, h=0)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1151
#12 0x0833a9ea in juce::Component::setBounds (this=0x86e9ed8, r=...)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1229
#13 0x081c9125 in SlidingPanelComponent::resized (this=0x86c2484)
    at ../../Source/Utility/jucer_SlidingPanelComponent.cpp:112
#14 0x0833a743 in juce::Component::sendMovedResizedMessages (this=0x86c2484, wasMoved=false,
    wasResized=true) at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1183
#15 0x0833a6ca in juce::Component::sendMovedResizedMessagesIfPending (this=0x86c2484)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1165
#16 0x0833a662 in juce::Component::setBounds (this=0x86c2484, x=0, y=0, w=0, h=0)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1151
#17 0x0833a9ea in juce::Component::setBounds (this=0x86c2484, r=...)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1229
#18 0x081e049f in NewProjectWizardClasses::StartPageComponent::resized (this=0x86c2410)
    at ../../Source/Wizards/jucer_StartPageComponent.h:47
#19 0x0833a743 in juce::Component::sendMovedResizedMessages (this=0x86c2410, wasMoved=false,
    wasResized=true) at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1183
#20 0x0833a6ca in juce::Component::sendMovedResizedMessagesIfPending (this=0x86c2410)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1165
#21 0x0833a662 in juce::Component::setBounds (this=0x86c2410, x=0, y=24, w=0, h=0)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1151
#22 0x0833a9ea in juce::Component::setBounds (this=0x86c2410, r=...)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1229
#23 0x0833ac80 in juce::Component::setBoundsInset (this=0x86c2410, borders=...)
    at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1277
#24 0x083b599a in juce::ResizableWindow::resized (this=0x86be0b0)
    at ../../../../modules/juce_gui_basics/windows/juce_ResizableWindow.cpp:222
#25 0x083b448a in juce::DocumentWindow::resized (this=0x86be0b0)
    at ../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.cpp:229
#26 0x0833a743 in juce::Component::sendMovedResizedMessages (this=0x86be0b0, wasMoved=true,
    wasResized=true) at ../../../../modules/juce_gui_basics/components/juce_Component.cpp:1183
#27 0x083b2445 in juce::ComponentPeer::handleMovedOrResized (this=0x86e81d8)
    at ../../../../modules/juce_gui_basics/windows/juce_ComponentPeer.cpp:323
#28 0x083f146b in juce::LinuxComponentPeer::handleGravityNotify (this=0x86e81d8)
    at ../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp:2394
#29 0x083f1425 in juce::LinuxComponentPeer::handleReparentNotifyEvent (this=0x86e81d8)
    at ../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp:2387
#30 0x083f0280 in juce::LinuxComponentPeer::handleWindowMessage (this=0x86e81d8, event=...)
    at ../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp:2005
#31 0x083eea91 in juce::LinuxComponentPeer::windowMessageReceive (event=...)
    at ../../../../modules/juce_gui_basics/native/juce_linux_Windowing.cpp:1541
#32 0x08279f12 in juce::InternalMessageQueue::dispatchNextXEvent ()
    at ../../../../modules/juce_events/native/juce_linux_Messaging.cpp:174
#33 0x08279af6 in juce::InternalMessageQueue::dispatchNextEvent (this=0x869e110)
    at ../../../../modules/juce_events/native/juce_linux_Messaging.cpp:93
#34 0x08277a52 in juce::MessageManager::dispatchNextMessageOnSystemQueue (
    returnIfNoPendingMessages=false)
    at ../../../../modules/juce_events/native/juce_linux_Messaging.cpp:390
#35 0x08274317 in juce::MessageManager::runDispatchLoop (this=0x869e078)
    at ../../../../modules/juce_events/messages/juce_MessageManager.cpp:130
#36 0x08273979 in juce::JUCEApplicationBase::main ()
    at ../../../../modules/juce_events/messages/juce_ApplicationBase.cpp:240
#37 0x0827388d in juce::JUCEApplicationBase::main (argc=1, argv=0xbffff154)
    at ../../../../modules/juce_events/messages/juce_ApplicationBase.cpp:218
#38 0x0806a879 in main (argc=1, argv=0xbffff154) at ../../Source/Application/jucer_Main.cpp:27

 

Hmmm doesn't help much... somehow the window already has zero size. Which OS (& version) are you using? Any special window manager? What is your hardware?

CPU is a core2duo 3GHz 4GB RAM and the graphics card is integrated intel GMA-450 - (nothing funky here - this is a very common configuration)

the OS is trisquel-mini 7.0 32-bit (a ubuntu derivative) - the desktop is the standard LXDE configuartion with openbox window manager and lightDM display manager

id be happy to post anything more verbose that may be relavent and id be happy to install other OS's on this hardware if it will help to debug this issue

OK thanks I'll try that on a VM. Since JUCE 3.1 I've mostly only added HI-DPI support for Linux - therefore one more question: do you have a hi-res display? Do you use scaling or multi-monitor setup?

my display was hi-res 10 years ago - today im not sure - "hi-res" seems to be a moving target

am using a single LCD monitor on a a box with only one VGA port on its integrated graphics card  - the monitor native resolution is 1680x1050 but i run it at 1280x800

**BUT** Fabian - as i mentioned i can run this same OS (installed from the same .iso) in virtualbox and it has no problem running JUCE v3.2.0 apps (even at smaller resolutions) - the issue is on the native hardware install

OK with Hi-Res I actually (:-D) mean if your monitor is scaled. In ubuntu, you can find the scale slider under System Settings -> Screen Dislay.

yep that is exatcly the issue - when display is set to the monitor native resolution the JUCE windows appear as expected - and at scaled down resolutions the window does not appear

Sorry for taking so long. We were at cppcon last week. I’ll have a look at this first thing tomorrow.

same with v4.0.1

also i noticed today while re-forking the repo that the git tag for v3.1.1 is at commit

Dec 16, 2014

91b5d774774bfdb4198fd0e6c622b9314ac9a4a0

but at that point the introjucer version is still v3.1.0 - the next day a commit was made that updated the introjucer version to match so this is where i am until this issue is resolved

Dec 17, 2014

12771a9f56e761ebf8a8cbd1928bc05abb4fc6cc