[DEBUG] X11 correction of the display start error (multi-threading error)
This commit is contained in:
parent
00951b6456
commit
46f30152c6
@ -202,6 +202,7 @@ class AndroidContext : public gale::Context {
|
|||||||
GALE_CRITICAL(" mission one function ==> system can not work withut it...");
|
GALE_CRITICAL(" mission one function ==> system can not work withut it...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
~AndroidContext() {
|
~AndroidContext() {
|
||||||
|
@ -258,8 +258,6 @@ gale::Context::Context(gale::Application* _application, int32_t _argc, const cha
|
|||||||
lockContext();
|
lockContext();
|
||||||
// create thread to manage real periodic event
|
// create thread to manage real periodic event
|
||||||
m_periodicThread = ememory::makeShared<PeriodicThread>(this);
|
m_periodicThread = ememory::makeShared<PeriodicThread>(this);
|
||||||
m_periodicThread->start();
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
|
||||||
|
|
||||||
// By default we set 2 themes (1 color and 1 shape ...) :
|
// By default we set 2 themes (1 color and 1 shape ...) :
|
||||||
etk::theme::setNameDefault("GUI", "shape/square/");
|
etk::theme::setNameDefault("GUI", "shape/square/");
|
||||||
@ -350,6 +348,14 @@ gale::Context::Context(gale::Application* _application, int32_t _argc, const cha
|
|||||||
m_simulationFile.filePuts("\n");
|
m_simulationFile.filePuts("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(__GALE_ANDROID_ORIENTATION_LANDSCAPE__)
|
||||||
|
forceOrientation(gale::orientation::screenLandscape);
|
||||||
|
#elif defined(__GALE_ANDROID_ORIENTATION_PORTRAIT__)
|
||||||
|
forceOrientation(gale::orientation::screenPortrait);
|
||||||
|
#else
|
||||||
|
forceOrientation(gale::orientation::screenAuto);
|
||||||
|
#endif
|
||||||
|
|
||||||
m_msgSystem.post([](gale::Context& _context){
|
m_msgSystem.post([](gale::Context& _context){
|
||||||
ememory::SharedPtr<gale::Application> appl = _context.getApplication();
|
ememory::SharedPtr<gale::Application> appl = _context.getApplication();
|
||||||
if (appl == nullptr) {
|
if (appl == nullptr) {
|
||||||
@ -362,18 +368,20 @@ gale::Context::Context(gale::Application* _application, int32_t _argc, const cha
|
|||||||
|
|
||||||
// force a recalculation
|
// force a recalculation
|
||||||
requestUpdateSize();
|
requestUpdateSize();
|
||||||
#if defined(__GALE_ANDROID_ORIENTATION_LANDSCAPE__)
|
|
||||||
forceOrientation(gale::orientation::screenLandscape);
|
|
||||||
#elif defined(__GALE_ANDROID_ORIENTATION_PORTRAIT__)
|
|
||||||
forceOrientation(gale::orientation::screenPortrait);
|
|
||||||
#else
|
|
||||||
forceOrientation(gale::orientation::screenAuto);
|
|
||||||
#endif
|
|
||||||
// release the curent interface :
|
// release the curent interface :
|
||||||
unLockContext();
|
unLockContext();
|
||||||
GALE_INFO(" == > Gale system init (END)");
|
GALE_INFO(" == > Gale system init (END)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gale::Context::start2ntThreadProcessing() {
|
||||||
|
// set the curent interface:
|
||||||
|
lockContext();
|
||||||
|
m_periodicThread->start();
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||||
|
// release the curent interface:
|
||||||
|
unLockContext();
|
||||||
|
}
|
||||||
|
|
||||||
void gale::Context::postAction(std::function<void(gale::Context& _context)> _action) {
|
void gale::Context::postAction(std::function<void(gale::Context& _context)> _action) {
|
||||||
std::unique_lock<std::recursive_mutex> lock(m_mutex);
|
std::unique_lock<std::recursive_mutex> lock(m_mutex);
|
||||||
m_msgSystem.post(_action);
|
m_msgSystem.post(_action);
|
||||||
@ -384,7 +392,7 @@ gale::Context::~Context() {
|
|||||||
m_periodicThread->stop();
|
m_periodicThread->stop();
|
||||||
getResourcesManager().applicationExiting();
|
getResourcesManager().applicationExiting();
|
||||||
// TODO : Clean the message list ...
|
// TODO : Clean the message list ...
|
||||||
// set the curent interface :
|
// set the curent interface:
|
||||||
lockContext();
|
lockContext();
|
||||||
// clean all widget and sub widget with their resources:
|
// clean all widget and sub widget with their resources:
|
||||||
//m_objectManager.cleanInternalRemoved();
|
//m_objectManager.cleanInternalRemoved();
|
||||||
|
@ -53,6 +53,11 @@ namespace gale {
|
|||||||
public:
|
public:
|
||||||
Context(gale::Application* _application, int32_t _argc=0, const char* _argv[]=nullptr);
|
Context(gale::Application* _application, int32_t _argc=0, const char* _argv[]=nullptr);
|
||||||
virtual ~Context();
|
virtual ~Context();
|
||||||
|
/**
|
||||||
|
* @brief StartProcessing (2nd thread).
|
||||||
|
* @note to call when all the Context is started
|
||||||
|
*/
|
||||||
|
void start2ntThreadProcessing();
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* @brief set the curent interface.
|
* @brief set the curent interface.
|
||||||
|
@ -35,6 +35,7 @@ public:
|
|||||||
MacOSInterface(gale::Application* _application, int32_t _argc, const char* _argv[]) :
|
MacOSInterface(gale::Application* _application, int32_t _argc, const char* _argv[]) :
|
||||||
gale::Context(_application, _argc, _argv) {
|
gale::Context(_application, _argc, _argv) {
|
||||||
// nothing to do ...
|
// nothing to do ...
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Run() {
|
int32_t Run() {
|
||||||
|
@ -38,6 +38,7 @@ class MacOSInterface : public gale::Context {
|
|||||||
MacOSInterface(gale::Application* _application, int _argc, const char* _argv[]) :
|
MacOSInterface(gale::Application* _application, int _argc, const char* _argv[]) :
|
||||||
gale::Context(_application, _argc, _argv) {
|
gale::Context(_application, _argc, _argv) {
|
||||||
mm_main(_argc, _argv);
|
mm_main(_argc, _argv);
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Run() {
|
int32_t Run() {
|
||||||
|
@ -96,6 +96,7 @@ class GLUTInterface : public gale::Context {
|
|||||||
GALE_INFO("monitor property : dpi=" << dpi << " px/inch");
|
GALE_INFO("monitor property : dpi=" << dpi << " px/inch");
|
||||||
}
|
}
|
||||||
m_run = true;
|
m_run = true;
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
~GLUTInterface() {
|
~GLUTInterface() {
|
||||||
|
@ -71,6 +71,7 @@ class WindowsContext : public gale::Context {
|
|||||||
m_inputIsPressed[iii] = false;
|
m_inputIsPressed[iii] = false;
|
||||||
}
|
}
|
||||||
configure();
|
configure();
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
~WindowsContext() {
|
~WindowsContext() {
|
||||||
|
@ -52,11 +52,36 @@ static bool hasDisplay = false;
|
|||||||
#define X11_VERBOSE GALE_VERBOSE
|
#define X11_VERBOSE GALE_VERBOSE
|
||||||
#define X11_INFO GALE_INFO
|
#define X11_INFO GALE_INFO
|
||||||
#define X11_CRITICAL GALE_CRITICAL
|
#define X11_CRITICAL GALE_CRITICAL
|
||||||
|
static int32_t callLevel = 0;
|
||||||
|
std::string getOffset(int32_t _size) {
|
||||||
|
std::string out;
|
||||||
|
for (int32_t iii=0; iii<_size; ++iii) {
|
||||||
|
out += "....";
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
class GaleTmpFuncCall {
|
||||||
|
private:
|
||||||
|
std::string m_value;
|
||||||
|
int32_t m_level;
|
||||||
|
public:
|
||||||
|
GaleTmpFuncCall(const std::string& _value) :
|
||||||
|
m_value(_value),
|
||||||
|
m_level(callLevel++) {
|
||||||
|
GALE_INFO(getOffset(m_level) << " ==> " << m_value);
|
||||||
|
}
|
||||||
|
~GaleTmpFuncCall() {
|
||||||
|
GALE_INFO(getOffset(m_level) << "<== " << m_value);
|
||||||
|
callLevel--;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#define X11_FUNC() GaleTmpFuncCall tmpValueCallqsdfqsdfqsdfqsdfqsdfqsdfqsdfqsdfqsdf(__PRETTY_FUNCTION__)
|
||||||
#else
|
#else
|
||||||
#define X11_DEBUG GALE_VERBOSE
|
#define X11_DEBUG GALE_VERBOSE
|
||||||
#define X11_VERBOSE GALE_VERBOSE
|
#define X11_VERBOSE GALE_VERBOSE
|
||||||
#define X11_INFO GALE_VERBOSE
|
#define X11_INFO GALE_VERBOSE
|
||||||
#define X11_CRITICAL GALE_VERBOSE
|
#define X11_CRITICAL GALE_VERBOSE
|
||||||
|
#define X11_FUNC() do {} while(false)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__TARGET_OS__Web)
|
#if !defined(__TARGET_OS__Web)
|
||||||
@ -170,6 +195,7 @@ class X11Interface : public gale::Context {
|
|||||||
XAtomDeleteWindows(0),
|
XAtomDeleteWindows(0),
|
||||||
m_currentCursor(gale::context::cursor::arrow),
|
m_currentCursor(gale::context::cursor::arrow),
|
||||||
m_lastKeyPressed(0) {
|
m_lastKeyPressed(0) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11:INIT");
|
X11_INFO("X11:INIT");
|
||||||
for (int32_t iii=0; iii<MAX_MANAGE_INPUT; iii++) {
|
for (int32_t iii=0; iii<MAX_MANAGE_INPUT; iii++) {
|
||||||
m_inputIsPressed[iii] = false;
|
m_inputIsPressed[iii] = false;
|
||||||
@ -194,13 +220,16 @@ class X11Interface : public gale::Context {
|
|||||||
XAtomGALE = XInternAtom(m_display, m_uniqueWindowsName.c_str(), 0);
|
XAtomGALE = XInternAtom(m_display, m_uniqueWindowsName.c_str(), 0);
|
||||||
XAtomDeleteWindows = XInternAtom(m_display, "WM_DELETE_WINDOW", 0);
|
XAtomDeleteWindows = XInternAtom(m_display, "WM_DELETE_WINDOW", 0);
|
||||||
m_run = true;
|
m_run = true;
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
~X11Interface() {
|
~X11Interface() {
|
||||||
// TODO : ...
|
// TODO : ...
|
||||||
|
X11_FUNC();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t run() {
|
int32_t run() {
|
||||||
|
X11_FUNC();
|
||||||
bool specialEventThatNeedARedraw = false;
|
bool specialEventThatNeedARedraw = false;
|
||||||
// main cycle
|
// main cycle
|
||||||
while(m_run == true) {
|
while(m_run == true) {
|
||||||
@ -802,11 +831,13 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
virtual void stop() {
|
virtual void stop() {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11-API: Stop");
|
X11_INFO("X11-API: Stop");
|
||||||
m_run = false;
|
m_run = false;
|
||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
virtual void setSize(const vec2& _size) {
|
virtual void setSize(const vec2& _size) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11-API: changeSize=" << _size);
|
X11_INFO("X11-API: changeSize=" << _size);
|
||||||
m_currentHeight = _size.y();
|
m_currentHeight = _size.y();
|
||||||
m_currentWidth = _size.x();
|
m_currentWidth = _size.x();
|
||||||
@ -814,6 +845,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
void setFullScreen(bool _status) {
|
void setFullScreen(bool _status) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11-API: changeFullscreen=" << _status);
|
X11_INFO("X11-API: changeFullscreen=" << _status);
|
||||||
XEvent event;
|
XEvent event;
|
||||||
event.xclient.type = ClientMessage;
|
event.xclient.type = ClientMessage;
|
||||||
@ -848,6 +880,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
virtual void grabKeyboardEvents(bool _status) {
|
virtual void grabKeyboardEvents(bool _status) {
|
||||||
|
X11_FUNC();
|
||||||
if (_status == true) {
|
if (_status == true) {
|
||||||
X11_INFO("X11-API: Grab Keyboard Events");
|
X11_INFO("X11-API: Grab Keyboard Events");
|
||||||
XGrabKeyboard(m_display, m_WindowHandle,
|
XGrabKeyboard(m_display, m_WindowHandle,
|
||||||
@ -862,6 +895,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
virtual void setWindowsDecoration(bool _status) {
|
virtual void setWindowsDecoration(bool _status) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11-API: setWindows Decoration :" << _status);
|
X11_INFO("X11-API: setWindows Decoration :" << _status);
|
||||||
// Remove/set decoration
|
// Remove/set decoration
|
||||||
Hints hints;
|
Hints hints;
|
||||||
@ -879,6 +913,7 @@ class X11Interface : public gale::Context {
|
|||||||
};
|
};
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
virtual void setPos(const vec2& _pos) {
|
virtual void setPos(const vec2& _pos) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11-API: changePos=" << _pos);
|
X11_INFO("X11-API: changePos=" << _pos);
|
||||||
m_windowsPos = _pos;
|
m_windowsPos = _pos;
|
||||||
XMoveWindow(m_display, m_WindowHandle, _pos.x(), _pos.y());
|
XMoveWindow(m_display, m_WindowHandle, _pos.x(), _pos.y());
|
||||||
@ -888,6 +923,7 @@ class X11Interface : public gale::Context {
|
|||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
/*
|
/*
|
||||||
virtual void getAbsPos(ivec2& pos) {
|
virtual void getAbsPos(ivec2& pos) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11-API: getAbsPos");
|
X11_INFO("X11-API: getAbsPos");
|
||||||
int tmp;
|
int tmp;
|
||||||
unsigned int tmp2;
|
unsigned int tmp2;
|
||||||
@ -897,6 +933,7 @@ class X11Interface : public gale::Context {
|
|||||||
*/
|
*/
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
virtual void setCursor(enum gale::context::cursor _newCursor) {
|
virtual void setCursor(enum gale::context::cursor _newCursor) {
|
||||||
|
X11_FUNC();
|
||||||
if (_newCursor != m_currentCursor) {
|
if (_newCursor != m_currentCursor) {
|
||||||
X11_DEBUG("X11-API: set New Cursor : " << _newCursor);
|
X11_DEBUG("X11-API: set New Cursor : " << _newCursor);
|
||||||
// undefine previous cursors ...
|
// undefine previous cursors ...
|
||||||
@ -987,6 +1024,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
void grabPointerEvents(bool _status, const vec2& _forcedPosition) {
|
void grabPointerEvents(bool _status, const vec2& _forcedPosition) {
|
||||||
|
X11_FUNC();
|
||||||
if (_status == true) {
|
if (_status == true) {
|
||||||
X11_DEBUG("X11-API: Grab Events");
|
X11_DEBUG("X11-API: Grab Events");
|
||||||
int32_t test = XGrabPointer(m_display,RootWindow(m_display, DefaultScreen(m_display)), True,
|
int32_t test = XGrabPointer(m_display,RootWindow(m_display, DefaultScreen(m_display)), True,
|
||||||
@ -1034,6 +1072,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
bool createX11Context() {
|
bool createX11Context() {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11: CreateX11Context");
|
X11_INFO("X11: CreateX11Context");
|
||||||
int x,y, attr_mask;
|
int x,y, attr_mask;
|
||||||
XSizeHints hints;
|
XSizeHints hints;
|
||||||
@ -1062,7 +1101,7 @@ class X11Interface : public gale::Context {
|
|||||||
if (m_visual == nullptr) {
|
if (m_visual == nullptr) {
|
||||||
m_visual = glXChooseVisual(m_display, Xscreen, attrListSgl);
|
m_visual = glXChooseVisual(m_display, Xscreen, attrListSgl);
|
||||||
m_doubleBuffered = false;
|
m_doubleBuffered = false;
|
||||||
GALE_INFO("GL-X singlebuffered rendering will be used, no doublebuffering available");
|
GALE_ERROR("GL-X singlebuffered rendering will be used, no doublebuffering available");
|
||||||
} else {
|
} else {
|
||||||
m_doubleBuffered = true;
|
m_doubleBuffered = true;
|
||||||
GALE_INFO("GL-X doublebuffered rendering available");
|
GALE_INFO("GL-X doublebuffered rendering available");
|
||||||
@ -1084,7 +1123,10 @@ class X11Interface : public gale::Context {
|
|||||||
// Create a colormap - only needed on some X clients, eg. IRIX
|
// Create a colormap - only needed on some X clients, eg. IRIX
|
||||||
Window Xroot = RootWindow(m_display, Xscreen);
|
Window Xroot = RootWindow(m_display, Xscreen);
|
||||||
#if !defined(__TARGET_OS__Web)
|
#if !defined(__TARGET_OS__Web)
|
||||||
attr.colormap = XCreateColormap(m_display, Xroot, m_visual->visual, AllocNone);
|
if ( m_display != nullptr
|
||||||
|
&& m_visual != nullptr) {
|
||||||
|
attr.colormap = XCreateColormap(m_display, Xroot, m_visual->visual, AllocNone);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
attr.border_pixel = 0;
|
attr.border_pixel = 0;
|
||||||
@ -1204,6 +1246,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
void setIcon(const std::string& _inputFile) {
|
void setIcon(const std::string& _inputFile) {
|
||||||
|
X11_FUNC();
|
||||||
#if defined(GALE_BUILD_EGAMI) \
|
#if defined(GALE_BUILD_EGAMI) \
|
||||||
&& !defined(__TARGET_OS__Web)
|
&& !defined(__TARGET_OS__Web)
|
||||||
egami::Image dataImage = egami::load(_inputFile);
|
egami::Image dataImage = egami::load(_inputFile);
|
||||||
@ -1272,7 +1315,11 @@ class X11Interface : public gale::Context {
|
|||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( m_display == nullptr
|
||||||
|
|| m_visual == nullptr) {
|
||||||
|
GALE_ERROR("X11 Can not create Image Icon ==> nullptr on m_display or m_visual");
|
||||||
|
return;
|
||||||
|
}
|
||||||
XImage* myImage = XCreateImage(m_display,
|
XImage* myImage = XCreateImage(m_display,
|
||||||
m_visual->visual,
|
m_visual->visual,
|
||||||
depth,
|
depth,
|
||||||
@ -1354,6 +1401,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
static void setVSync(bool _sync) {
|
static void setVSync(bool _sync) {
|
||||||
|
X11_FUNC();
|
||||||
// Function pointer for the wgl extention function we need to enable/disable
|
// Function pointer for the wgl extention function we need to enable/disable
|
||||||
typedef int32_t (APIENTRY *PFNWGLSWAPINTERVALPROC)( int );
|
typedef int32_t (APIENTRY *PFNWGLSWAPINTERVALPROC)( int );
|
||||||
PFNWGLSWAPINTERVALPROC wglSwapIntervalEXT = 0;
|
PFNWGLSWAPINTERVALPROC wglSwapIntervalEXT = 0;
|
||||||
@ -1376,6 +1424,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
bool createOGlContext() {
|
bool createOGlContext() {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11:CreateOGlContext");
|
X11_INFO("X11:CreateOGlContext");
|
||||||
#if defined(__TARGET_OS__Web)
|
#if defined(__TARGET_OS__Web)
|
||||||
/* create a GLX context */
|
/* create a GLX context */
|
||||||
@ -1404,6 +1453,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
void setTitle(const std::string& _title) {
|
void setTitle(const std::string& _title) {
|
||||||
|
X11_FUNC();
|
||||||
X11_INFO("X11: set Title (START)");
|
X11_INFO("X11: set Title (START)");
|
||||||
XTextProperty tp;
|
XTextProperty tp;
|
||||||
tp.value = (unsigned char *)_title.c_str();
|
tp.value = (unsigned char *)_title.c_str();
|
||||||
@ -1417,6 +1467,7 @@ class X11Interface : public gale::Context {
|
|||||||
X11_INFO("X11: set Title (END)");
|
X11_INFO("X11: set Title (END)");
|
||||||
}
|
}
|
||||||
void openURL(const std::string& _url) {
|
void openURL(const std::string& _url) {
|
||||||
|
X11_FUNC();
|
||||||
std::string req = "xdg-open ";
|
std::string req = "xdg-open ";
|
||||||
req += _url;
|
req += _url;
|
||||||
system(req.c_str());
|
system(req.c_str());
|
||||||
@ -1424,6 +1475,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
void clipBoardGet(enum gale::context::clipBoard::clipboardListe _clipboardID) {
|
void clipBoardGet(enum gale::context::clipBoard::clipboardListe _clipboardID) {
|
||||||
|
X11_FUNC();
|
||||||
switch (_clipboardID) {
|
switch (_clipboardID) {
|
||||||
case gale::context::clipBoard::clipboardSelection:
|
case gale::context::clipBoard::clipboardSelection:
|
||||||
if (m_clipBoardOwnerPrimary == false) {
|
if (m_clipBoardOwnerPrimary == false) {
|
||||||
@ -1462,6 +1514,7 @@ class X11Interface : public gale::Context {
|
|||||||
}
|
}
|
||||||
/****************************************************************************************/
|
/****************************************************************************************/
|
||||||
void clipBoardSet(enum gale::context::clipBoard::clipboardListe _clipboardID) {
|
void clipBoardSet(enum gale::context::clipBoard::clipboardListe _clipboardID) {
|
||||||
|
X11_FUNC();
|
||||||
switch (_clipboardID) {
|
switch (_clipboardID) {
|
||||||
case gale::context::clipBoard::clipboardSelection:
|
case gale::context::clipBoard::clipboardSelection:
|
||||||
// Request the selection :
|
// Request the selection :
|
||||||
|
@ -65,6 +65,7 @@ class SimulationInterface : public gale::Context {
|
|||||||
gale::Context(_application, _argc, _argv) {
|
gale::Context(_application, _argc, _argv) {
|
||||||
GALE_INFO("SIMU:INIT");
|
GALE_INFO("SIMU:INIT");
|
||||||
m_run = true;
|
m_run = true;
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
~SimulationInterface() {
|
~SimulationInterface() {
|
||||||
|
@ -329,6 +329,7 @@ class WAYLANDInterface : public gale::Context {
|
|||||||
m_uniqueWindowsName = "GALE_" + etk::to_string(etk::tool::irand(0, 1999999999));
|
m_uniqueWindowsName = "GALE_" + etk::to_string(etk::tool::irand(0, 1999999999));
|
||||||
m_run = true;
|
m_run = true;
|
||||||
GALE_WARNING("WAYLAND: INIT [STOP]");
|
GALE_WARNING("WAYLAND: INIT [STOP]");
|
||||||
|
start2ntThreadProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
~WAYLANDInterface() {
|
~WAYLANDInterface() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user