diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2025-02-09 15:58:28 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2025-02-10 23:18:33 +0200 | 
| commit | bc84cb02a2f324792deca766a4179d028473a282 (patch) | |
| tree | ecb69efebcc67e9b88c0f9edddb5ed973290d5da /indra | |
| parent | 3a251b1b9e753589dd12e25236e77275c9010566 (diff) | |
#3332 Issues with text buffer updates
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llwindow/llwindowcallbacks.cpp | 5 | ||||
| -rw-r--r-- | indra/llwindow/llwindowcallbacks.h | 1 | ||||
| -rw-r--r-- | indra/llwindow/llwindowwin32.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.h | 1 | 
5 files changed, 21 insertions, 5 deletions
| diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index c160382c17..195f68e08b 100644 --- a/indra/llwindow/llwindowcallbacks.cpp +++ b/indra/llwindow/llwindowcallbacks.cpp @@ -194,6 +194,11 @@ bool LLWindowCallbacks::handleDPIChanged(LLWindow *window, F32 ui_scale_factor,      return false;  } +bool LLWindowCallbacks::handleDisplayChanged() +{ +    return false; +} +  bool LLWindowCallbacks::handleWindowDidChangeScreen(LLWindow *window)  {      return false; diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index 63b585231f..d812f93524 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -69,6 +69,7 @@ public:      virtual bool handleTimerEvent(LLWindow *window);      virtual bool handleDeviceChange(LLWindow *window);      virtual bool handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); +    virtual bool handleDisplayChanged();      virtual bool handleWindowDidChangeScreen(LLWindow *window);      enum DragNDropAction { diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 5defa662fa..832cf254d1 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -81,10 +81,6 @@ const S32   BITS_PER_PIXEL = 32;  const S32   MAX_NUM_RESOLUTIONS = 32;  const F32   ICON_FLASH_TIME = 0.5f; -#ifndef WM_DPICHANGED -#define WM_DPICHANGED 0x02E0 -#endif -  #ifndef USER_DEFAULT_SCREEN_DPI  #define USER_DEFAULT_SCREEN_DPI 96 // Win7  #endif @@ -2969,6 +2965,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_              return 0;          } +        case WM_DISPLAYCHANGE: +        { +            WINDOW_IMP_POST(window_imp->mCallbacks->handleDisplayChanged()); +        } +          case WM_SETFOCUS:          {              LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_SETFOCUS"); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 8915e68298..5a7d507b74 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1746,11 +1746,11 @@ bool LLViewerWindow::handleDeviceChange(LLWindow *window)  bool LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height)  { +    LLFontGL::sResolutionGeneration++;      if (ui_scale_factor >= MIN_UI_SCALE && ui_scale_factor <= MAX_UI_SCALE)      {          LLViewerWindow::reshape(window_width, window_height);          mResDirty = true; -        LLFontGL::sResolutionGeneration++;          return true;      }      else @@ -1760,6 +1760,12 @@ bool LLViewerWindow::handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32      }  } +bool LLViewerWindow::handleDisplayChanged() +{ +    LLFontGL::sResolutionGeneration++; +    return false; +} +  bool LLViewerWindow::handleWindowDidChangeScreen(LLWindow *window)  {      LLCoordScreen window_rect; @@ -1928,6 +1934,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)      mDisplayScale.setVec(llmax(1.f / mWindow->getPixelAspectRatio(), 1.f), llmax(mWindow->getPixelAspectRatio(), 1.f));      mDisplayScale *= ui_scale_factor;      LLUI::setScaleFactor(mDisplayScale); +    LLFontGL::sResolutionGeneration++;      {          LLCoordWindow size; @@ -2495,6 +2502,7 @@ void LLViewerWindow::reshape(S32 width, S32 height)          bool display_scale_changed = mDisplayScale != LLUI::getScaleFactor();          LLUI::setScaleFactor(mDisplayScale); +        LLFontGL::sResolutionGeneration++;          // update our window rectangle          mWindowRectScaled.mRight = mWindowRectScaled.mLeft + ll_round((F32)width / mDisplayScale.mV[VX]); diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 1b995ea650..fbc2c58fbf 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -225,6 +225,7 @@ public:      /*virtual*/ bool handleTimerEvent(LLWindow *window);      /*virtual*/ bool handleDeviceChange(LLWindow *window);      /*virtual*/ bool handleDPIChanged(LLWindow *window, F32 ui_scale_factor, S32 window_width, S32 window_height); +    /*virtual*/ bool handleDisplayChanged();      /*virtual*/ bool handleWindowDidChangeScreen(LLWindow *window);      /*virtual*/ void handlePingWatchdog(LLWindow *window, const char * msg); | 
