1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Linux: Fail more gracefully on systems which don't support 32-, 24-, or 16-bit RGB displays

This commit is contained in:
ed 2021-03-09 12:11:05 +00:00
parent 55ffcd1893
commit 40c86d6b2f
3 changed files with 11 additions and 4 deletions

View file

@ -41,6 +41,9 @@ public:
// it's dangerous to create a window on a thread other than the message thread.
JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED
if (! XWindowSystem::getInstance()->isX11Available())
return;
if (isAlwaysOnTop)
++numAlwaysOnTopPeers;
@ -262,12 +265,14 @@ public:
//==============================================================================
void repaint (const Rectangle<int>& area) override
{
repainter->repaint (area.getIntersection (bounds.withZeroOrigin()));
if (repainter != nullptr)
repainter->repaint (area.getIntersection (bounds.withZeroOrigin()));
}
void performAnyPendingRepaintsNow() override
{
repainter->performAnyPendingRepaintsNow();
if (repainter != nullptr)
repainter->performAnyPendingRepaintsNow();
}
void setIcon (const Image& newIcon) override

View file

@ -1983,7 +1983,7 @@ bool XWindowSystem::canUseARGBImages() const
X11Symbols::getInstance()->xDefaultVisual (display, X11Symbols::getInstance()->xDefaultScreen (display)),
24, ZPixmap, nullptr, &segmentinfo, 64, 64);
canUseARGB = (testImage->bits_per_pixel == 32);
canUseARGB = testImage != nullptr && testImage->bits_per_pixel == 32;
X11Symbols::getInstance()->xDestroyImage (testImage);
}
else
@ -3013,7 +3013,7 @@ bool XWindowSystem::initialiseXDisplay()
if (! displayVisuals->isValid())
{
Logger::outputDebugString ("ERROR: System doesn't support 32, 24 or 16 bit RGB display.\n");
Process::terminate();
return false;
}
// Setup input event handler

View file

@ -164,6 +164,8 @@ public:
::Display* getDisplay() { return display; }
XWindowSystemUtilities::Atoms& getAtoms() { return atoms; }
bool isX11Available() const noexcept { return xIsAvailable; }
//==============================================================================
void handleWindowMessage (LinuxComponentPeer*, XEvent&) const;
bool isParentWindowOf (::Window, ::Window possibleChild) const;