diff options
| author | Mnikolenko ProductEngine <mnikolenko@productengine.com> | 2021-11-17 17:51:50 +0200 | 
|---|---|---|
| committer | Mnikolenko ProductEngine <mnikolenko@productengine.com> | 2021-11-17 17:51:50 +0200 | 
| commit | fdeeb0190eb6fa2d6b39816d14a664f5d38aa4ec (patch) | |
| tree | fc8f807b4e1ad7e74a14d5989c9bf89cb9e194e1 | |
| parent | 4745aab37647956cf92e760df525d5fe64f47908 (diff) | |
SL-16330 Allow vsync update without restart on mac
| -rw-r--r-- | indra/llwindow/llwindow.h | 2 | ||||
| -rw-r--r-- | indra/llwindow/llwindowheadless.h | 6 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx.cpp | 27 | ||||
| -rw-r--r-- | indra/llwindow/llwindowmacosx.h | 2 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 2 | 
5 files changed, 22 insertions, 17 deletions
| diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index 43d81e4d59..0edf39f6ef 100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -88,11 +88,11 @@ public:      //Must be called on the same thread that called createSharedContext()      virtual void destroySharedContext(void* context) = 0; +    virtual void toggleVSync(bool enable_vsync) = 0;      virtual BOOL setCursorPosition(LLCoordWindow position) = 0;  	virtual BOOL getCursorPosition(LLCoordWindow *position) = 0;  #if LL_WINDOWS -    virtual void toggleVSync(bool enable_vsync) = 0;      virtual BOOL getCursorDelta(LLCoordCommon* delta) = 0;  #endif  	virtual void showCursor() = 0; diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h index 78c5e4bae4..410da79623 100644 --- a/indra/llwindow/llwindowheadless.h +++ b/indra/llwindow/llwindowheadless.h @@ -52,10 +52,10 @@ public:      void* createSharedContext()  { return nullptr; }      void makeContextCurrent(void*)  {}      void destroySharedContext(void*)  {} -	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;}; -	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;}; +    /*virtual*/ void toggleVSync(bool enable_vsync) { } +    /*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;}; +    /*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;};  #if LL_WINDOWS -    /*virtual*/ virtual void toggleVSync(bool enable_vsync) { }      /*virtual*/ BOOL getCursorDelta(LLCoordCommon* delta) { return FALSE; }  #endif  	/*virtual*/ void showCursor() {}; diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index dac84690db..0e37e82091 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -661,17 +661,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits  	}  	// Disable vertical sync for swap -	GLint frames_per_swap = 0; -	if (!enable_vsync) -	{ -		frames_per_swap = 0; -	} -	else -	{ -		frames_per_swap = 1; -	} -	 -	CGLSetParameter(mContext, kCGLCPSwapInterval, &frames_per_swap); +    toggleVSync(enable_vsync);  	//enable multi-threaded OpenGL  	if (sUseMultGL) @@ -1944,6 +1934,21 @@ void LLWindowMacOSX::destroySharedContext(void* context)      delete sc;  } +void LLWindowMacOSX::toggleVSync(bool enable_vsync) +{ +    GLint frames_per_swap = 0; +    if (!enable_vsync) +    { +        frames_per_swap = 0; +    } +    else +    { +        frames_per_swap = 1; +    } +     +    CGLSetParameter(mContext, kCGLCPSwapInterval, &frames_per_swap); +} +  void LLWindowMacOSX::interruptLanguageTextInput()  {  	commitCurrentPreedit(mGLView); diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 18fa86930f..b0f339e1db 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -140,6 +140,8 @@ public:      //Must be called on the same thread that called createSharedContext()      void destroySharedContext(void* context) override; +    void toggleVSync(bool enable_vsync) override; +  protected:  	LLWindowMacOSX(LLWindowCallbacks* callbacks,  		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 9f76543647..e20c64e48e 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -260,9 +260,7 @@ static bool handleAnisotropicChanged(const LLSD& newvalue)  static bool handleVSyncChanged(const LLSD& newvalue)  { -#if LL_WINDOWS      gViewerWindow->getWindow()->toggleVSync(newvalue.asBoolean()); -#endif      return true;  } | 
