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:
parent
55ffcd1893
commit
40c86d6b2f
3 changed files with 11 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue