#include "fast_atof.h"\r
\r
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
-static bool sdl_supports_primary_selection = [] {\r
+static const bool sdl_supports_primary_selection = [] {\r
#if SDL_VERSION_ATLEAST(2, 25, 0)\r
SDL_version linked_version;\r
SDL_GetVersion(&linked_version);\r
}\r
\r
\r
+COSOperator::~COSOperator()\r
+{\r
+#ifdef _IRR_COMPILE_WITH_SDL_DEVICE_\r
+ SDL_free(ClipboardSelectionText);\r
+ SDL_free(PrimarySelectionText);\r
+#endif\r
+}\r
+\r
+\r
//! returns the current operating system version as string.\r
const core::stringc& COSOperator::getOperatingSystemVersion() const\r
{\r
const c8* COSOperator::getTextFromClipboard() const\r
{\r
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
- static char *text = nullptr;\r
- if (text)\r
- SDL_free(text);\r
- text = SDL_GetClipboardText();\r
- return text;\r
+ SDL_free(ClipboardSelectionText);\r
+ ClipboardSelectionText = SDL_GetClipboardText();\r
+ return ClipboardSelectionText;\r
\r
#elif defined(_IRR_WINDOWS_API_)\r
if (!OpenClipboard(NULL))\r
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
#if SDL_VERSION_ATLEAST(2, 25, 0)\r
if (sdl_supports_primary_selection) {\r
- static char *text = nullptr;\r
- if (text)\r
- SDL_free(text);\r
- text = SDL_GetPrimarySelectionText();\r
- return text;\r
+ SDL_free(PrimarySelectionText);\r
+ PrimarySelectionText = SDL_GetPrimarySelectionText();\r
+ return PrimarySelectionText;\r
}\r
#endif\r
return 0;\r
\r
#elif defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
- if ( IrrDeviceLinux )\r
- return IrrDeviceLinux->getTextFromPrimarySelection();\r
- return 0;\r
+ if ( IrrDeviceLinux )\r
+ return IrrDeviceLinux->getTextFromPrimarySelection();\r
+ return 0;\r
\r
#else\r
\r
#endif\r
COSOperator(const core::stringc& osversion);\r
\r
+ ~COSOperator();\r
+\r
+ COSOperator(const COSOperator &) = delete;\r
+ COSOperator &operator=(const COSOperator &) = delete;\r
+\r
//! returns the current operation system version as string.\r
const core::stringc& getOperatingSystemVersion() const override;\r
\r
mutable core::stringc ClipboardBuf;\r
#endif\r
\r
+#ifdef _IRR_COMPILE_WITH_SDL_DEVICE_\r
+ // These need to be freed with SDL_free\r
+ mutable char *ClipboardSelectionText = nullptr;\r
+ mutable char *PrimarySelectionText = nullptr;\r
+#endif\r
+\r
};\r
\r
} // end namespace\r