Browse Source

Linux: Fixed some issues flagged by asan

tags/2021-05-28
ed 5 years ago
parent
commit
8e4277085a
1 changed files with 9 additions and 4 deletions
  1. +9
    -4
      modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp

+ 9
- 4
modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp View File

@@ -998,6 +998,7 @@ namespace PixmapHelpers
GC gc = XCreateGC (display, pixmap, 0, nullptr);
XPutImage (display, pixmap, gc, ximage, 0, 0, 0, 0, width, height);
XFreeGC (display, gc);
XFree (ximage);
return pixmap;
}
@@ -4044,6 +4045,8 @@ void MouseCursor::deleteMouseCursor (void* cursorHandle, bool)
if (auto display = xDisplay.display)
{
ScopedXLock xlock (display);
cursorMap.erase ((Cursor) cursorHandle);
XFreeCursor (display, (Cursor) cursorHandle);
}
}
@@ -4113,16 +4116,18 @@ void MouseCursor::showInWindow (ComponentPeer* peer) const
{
ScopedXDisplay xDisplay;
if (cursorHandle != nullptr && xDisplay.display != cursorMap[(Cursor) getHandle()])
auto cursor = (Cursor) getHandle();
auto cursorDisplay = cursorMap[cursor];
if (cursorHandle != nullptr && xDisplay.display != cursorDisplay)
{
auto oldHandle = (Cursor) getHandle();
cursorMap.erase (cursor);
XFreeCursor (cursorDisplay, cursor);
if (auto* customInfo = cursorHandle->getCustomInfo())
cursorHandle->setHandle (customInfo->create());
else
cursorHandle->setHandle (createStandardMouseCursor (cursorHandle->getType()));
cursorMap.erase (oldHandle);
}
lp->showMouseCursor ((Cursor) getHandle());


Loading…
Cancel
Save