Ansariel 2023-02-17 13:58:10 +01:00
commit 49a761189e
10 changed files with 69 additions and 45 deletions

View File

@ -988,9 +988,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>d3f4d83e7b81673731ece92125473b00</string>
<string>ad7b9fc10184e8145731f45ae400bfd1</string>
<key>url</key>
<string>http://3p.firestormviewer.org/dullahan-1.12.2.202209171157_91.1.23_g04c8d56_chromium-91.0.4472.164-linux64-222600157.tar.bz2</string>
<string>http://3p.firestormviewer.org/dullahan-1.12.2.202210012157_92.0.27_g274abcf_chromium-92.0.4515.159-linux64-222741156.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>

View File

@ -437,7 +437,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
const std::string& title, S32 x, S32 y, S32 width,
S32 height, U32 flags,
BOOL fullscreen, BOOL clearBg,
BOOL disable_vsync, BOOL use_gl,
BOOL enable_vsync, BOOL use_gl,
// <FS:LO> Legacy cursor setting from main program
//BOOL ignore_pixel_depth, U32 fsaa_samples,)
BOOL ignore_pixel_depth, U32 fsaa_samples, BOOL useLegacyCursors)
@ -483,7 +483,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
mWindowTitle = title;
// Create the GL context and set it up for windowed or fullscreen, as appropriate.
if(createContext(x, y, width, height, 32, fullscreen, disable_vsync))
if(createContext(x, y, width, height, 32, fullscreen, enable_vsync))
{
gGLManager.initGL();
@ -667,7 +667,7 @@ void LLWindowSDL::setTitle(const std::string &title)
SDL_WM_SetCaption(title.c_str(), title.c_str());
}
BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync)
BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL enable_vsync)
{
//bool glneedsinit = false;
@ -1001,7 +1001,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
// changing fullscreen resolution, or switching between windowed and fullscreen mode.
BOOL LLWindowSDL::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp)
BOOL LLWindowSDL::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL enable_vsync, const LLCoordScreen * const posp)
{
const BOOL needsRebuild = TRUE; // Just nuke the context and start over.
BOOL result = true;
@ -1011,7 +1011,7 @@ BOOL LLWindowSDL::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL
if(needsRebuild)
{
destroyContext();
result = createContext(0, 0, size.mX, size.mY, 0, fullscreen, disable_vsync);
result = createContext(0, 0, size.mX, size.mY, 0, fullscreen, enable_vsync);
if (result)
{
gGLManager.initGL();

View File

@ -69,7 +69,7 @@ public:
/*virtual*/ BOOL setPosition(LLCoordScreen position);
/*virtual*/ BOOL setSizeImpl(LLCoordScreen size);
/*virtual*/ BOOL setSizeImpl(LLCoordWindow size);
/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL);
/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL enable_vsync, const LLCoordScreen * const posp = NULL);
/*virtual*/ BOOL setCursorPosition(LLCoordWindow position);
/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position);
/*virtual*/ void showCursor();
@ -159,7 +159,7 @@ public:
protected:
LLWindowSDL(LLWindowCallbacks* callbacks,
const std::string& title, int x, int y, int width, int height, U32 flags,
BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
BOOL fullscreen, BOOL clearBg, BOOL enable_vsync, BOOL use_gl,
//BOOL ignore_pixel_depth, U32 fsaa_samples);
BOOL ignore_pixel_depth, U32 fsaa_samples, BOOL useLegacyCursors); // <FS:LO> Legacy cursor setting from main program
~LLWindowSDL();
@ -186,7 +186,7 @@ protected:
//
// create or re-create the GL context/window. Called from the constructor and switchContext().
BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync);
BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL enable_vsync);
void destroyContext();
void setupFailure(const std::string& text, const std::string& caption, U32 type);
void fixWindowSize(void);
@ -263,4 +263,4 @@ public:
S32 OSMessageBoxSDL(const std::string& text, const std::string& caption, U32 type);
#endif //LL_LLWINDOWSDL_H
#endif
#endif

View File

@ -382,7 +382,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
const std::string& title, S32 x, S32 y, S32 width,
S32 height, U32 flags,
BOOL fullscreen, BOOL clearBg,
BOOL disable_vsync, BOOL use_gl,
BOOL enable_vsync, BOOL use_gl,
// <FS:LO> Legacy cursor setting from main program
//BOOL ignore_pixel_depth, U32 fsaa_samples,)
BOOL ignore_pixel_depth, U32 fsaa_samples, BOOL useLegacyCursors)
@ -427,7 +427,7 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
mWindowTitle = title;
// Create the GL context and set it up for windowed or fullscreen, as appropriate.
if(createContext(x, y, width, height, 32, fullscreen, disable_vsync))
if(createContext(x, y, width, height, 32, fullscreen, enable_vsync))
{
gGLManager.initGL();
@ -663,7 +663,7 @@ void LLWindowSDL::tryFindFullscreenSize( int &width, int &height )
}
}
BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync)
BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL enable_vsync)
{
//bool glneedsinit = false;
@ -739,7 +739,6 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
// We need stencil support for a few (minor) things.
if (stencilBits)
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, stencilBits);
// *FIX: try to toggle vsync here?
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
@ -763,7 +762,11 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
setupFailure("GL Context creation error creation error", "Error", OSMB_OK);
return FALSE;
}
// SDL_GL_SetSwapInterval(1);
// FIRE-32559: This *should* work, but for some reason aftrer login vsync always acts as if it's disabled, so
// the flag will get set again later in void LLViewerWindow::setStartupComplete() -Zi
toggleVSync(enable_vsync);
mSurface = SDL_GetWindowSurface( mWindow );
}
@ -921,7 +924,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B
// changing fullscreen resolution, or switching between windowed and fullscreen mode.
BOOL LLWindowSDL::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp)
BOOL LLWindowSDL::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL enable_vsync, const LLCoordScreen * const posp)
{
const BOOL needsRebuild = TRUE; // Just nuke the context and start over.
BOOL result = true;
@ -931,7 +934,7 @@ BOOL LLWindowSDL::switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL
if(needsRebuild)
{
destroyContext();
result = createContext(0, 0, size.mX, size.mY, 0, fullscreen, disable_vsync);
result = createContext(0, 0, size.mX, size.mY, 0, fullscreen, enable_vsync);
if (result)
{
gGLManager.initGL();
@ -2731,7 +2734,31 @@ void LLWindowSDL::destroySharedContext(void* context)
void LLWindowSDL::toggleVSync(bool enable_vsync)
{
SDL_GL_SetSwapInterval(enable_vsync);
if (enable_vsync)
{
// try adaptive vsync first (-1) and if that fails, try regular vsync (1)
if (SDL_GL_SetSwapInterval(-1) == -1)
{
LL_INFOS() << "Failed to enable adaptive vsync, trying regular vsync" << LL_ENDL;
if (SDL_GL_SetSwapInterval(1) == -1)
{
LL_WARNS() << "Failed to enable vsync" << LL_ENDL;
}
else
{
LL_DEBUGS() << "Vsync enabled" << LL_ENDL;
}
}
else
{
LL_DEBUGS() << "Adaptive vsync enabled" << LL_ENDL;
}
}
else
{
SDL_GL_SetSwapInterval(0);
LL_DEBUGS() << "Vsync disabled" << LL_ENDL;
}
}
// </FS:Zi>

View File

@ -65,7 +65,7 @@ public:
/*virtual*/ BOOL setPosition(LLCoordScreen position);
/*virtual*/ BOOL setSizeImpl(LLCoordScreen size);
/*virtual*/ BOOL setSizeImpl(LLCoordWindow size);
/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL);
/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL enable_vsync, const LLCoordScreen * const posp = NULL);
// <FS:Zi> Make shared context work on Linux for multithreaded OpenGL
void* createSharedContext() override;
void makeContextCurrent(void* context) override;
@ -162,7 +162,7 @@ public:
protected:
LLWindowSDL(LLWindowCallbacks* callbacks,
const std::string& title, int x, int y, int width, int height, U32 flags,
BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl,
BOOL fullscreen, BOOL clearBg, BOOL enable_vsync, BOOL use_gl,
//BOOL ignore_pixel_depth, U32 fsaa_samples);
BOOL ignore_pixel_depth, U32 fsaa_samples, BOOL useLegacyCursors); // <FS:LO> Legacy cursor setting from main program
~LLWindowSDL();
@ -189,7 +189,7 @@ protected:
//
// create or re-create the GL context/window. Called from the constructor and switchContext().
BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync);
BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL enable_vsync);
void destroyContext();
void setupFailure(const std::string& text, const std::string& caption, U32 type);
void fixWindowSize(void);

View File

@ -1817,7 +1817,10 @@ bool LLAppViewer::doFrame()
{
// Sleep if we're not rendering, or the window is minimized.
static LLCachedControl<S32> s_background_yield_time(gSavedSettings, "BackgroundYieldTime", 40);
S32 milliseconds_to_sleep = llclamp((S32)s_background_yield_time, 0, 1000);
// <FS:Ansariel> FIRE-32722: Make sure to idle if actually minimized
//S32 milliseconds_to_sleep = llclamp((S32)s_background_yield_time, 0, 1000);
S32 milliseconds_to_sleep = llclamp((S32)s_background_yield_time, (gViewerWindow && gViewerWindow->getWindow()->getMinimized()) ? 1 : 0, 1000);
// </FS:Ansariel>
// don't sleep when BackgroundYieldTime set to 0, since this will still yield to other threads
// of equal priority on Windows
if (milliseconds_to_sleep > 0)

View File

@ -175,7 +175,7 @@ SimMeasurement<> SIM_TIME_DILATION("simtimedilation", "Simulator time scale",
SIM_MAIN_AGENTS("simmainagents", "Number of avatars in current region", LL_SIM_STAT_NUMAGENTMAIN),
SIM_CHILD_AGENTS("simchildagents", "Number of avatars in neighboring regions", LL_SIM_STAT_NUMAGENTCHILD),
SIM_OBJECTS("simobjects", "", LL_SIM_STAT_NUMTASKS),
SIM_ACTIVE_OBJECTS("simactiveobjects", "Number of scripted and/or mocing objects", LL_SIM_STAT_NUMTASKSACTIVE),
SIM_ACTIVE_OBJECTS("simactiveobjects", "Number of scripted and/or moving objects", LL_SIM_STAT_NUMTASKSACTIVE),
SIM_ACTIVE_SCRIPTS("simactivescripts", "Number of scripted objects", LL_SIM_STAT_NUMSCRIPTSACTIVE),
SIM_IN_PACKETS_PER_SEC("siminpps", "", LL_SIM_STAT_INPPS),
SIM_OUT_PACKETS_PER_SEC("simoutpps", "", LL_SIM_STAT_OUTPPS),

View File

@ -6827,6 +6827,12 @@ void LLViewerWindow::setStartupComplete()
{
mProgressView->setStartupComplete();
}
#if LL_SDL2
// FIRE-32559: For some reason aftrer login vsync always acts as if it's disabled, so
// the flag will get set again here after the 3D view is set up -Zi
getWindow()->toggleVSync(gSavedSettings.getBOOL("RenderVSyncEnable"));
#endif
}
BOOL LLViewerWindow::getShowProgress() const

View File

@ -1163,7 +1163,7 @@ Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisa
Nie możesz kupić działek dla grupy.
Nie masz praw kupowania działek dla Twojej aktywnej grupy.
</notification>
<notification label="Add Friend" name="AddFriendWithMessage">
<notification label="Dodaj znajomego" name="AddFriendWithMessage">
Znajomi mogą pozwalać na odnajdywanie się wzajemnie na mapie i na otrzymywanie informacji o statusie online.
Zaproponować znajomość [NAME]?
@ -1407,7 +1407,7 @@ Możesz normalnie używać [APP_NAME], inni użytkownicy będą Cię widzieli po
<notification name="AgentComplexityWithVisibility">
Twój [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 stopień złożoności awatara] to [AGENT_COMPLEXITY].
[OVERLIMIT_MSG]
<usetemplate ignoretext="Ostrzegaj mnie, gdy stopień złożoności mojego awatara jest zbyt wysoki" name="notifyignore"/>
<usetemplate ignoretext="Ostrzegaj mnie, gdy stopień złożoności mojego awatara jest zbyt wysoki" name="notifyignore"/>
</notification>
<notification name="AgentComplexity">
Twój [https://community.secondlife.com/t5/English-Knowledge-Base/Avatar-Rendering-Complexity/ta-p/2967838 stopień złożoności awatara] to [AGENT_COMPLEXITY].
@ -1793,7 +1793,7 @@ Premium Plus pozwala na [MAX_PREMIUM_PLUS]. [https://secondlife.com/my/account/m
</form>
</notification>
<notification name="KickAllUsers">
Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu?
Z jakim komunikatem wyrzucić wszystkich użytkowników ze świata?
<form name="form">
<input name="message">
Administrator wylogował Cię.
@ -1933,7 +1933,7 @@ Kontynuować?
<notification label="Zmiana dostępu do Majątku Lindenów" name="ChangeLindenAccess">
Dokonujesz zmiany w liście dostępu Regionu głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja).
Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci.
Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/ze świata.
Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
Kontynuować?
@ -2865,7 +2865,7 @@ Nie możesz tutaj latać.
Popychanie niedozwolone. Nie możesz tutaj popychać innych chyba, że jesteś właścicielem tej działki.
</notification>
<notification name="NoVoice">
Ta działka nie pozwala na rozmowy głosowe.
Ta działka nie pozwala na rozmowy głosowe. Nie będziesz słyszeć, jak ktoś rozmawia.
</notification>
<notification name="NoBuild">
Ta działka nie pozwala na budowanie. Nie możesz tworzyć tutaj obiektów.
@ -2910,7 +2910,7 @@ Pełne informacje na temat klasyfikacji treści można znaleźć [https://commun
Region, do którego próbujesz się dostać, właśnie się wyłącza.
</notification>
<notification name="URBannedFromRegion">
Zostałeś zbanowany w regionie.
Zostałeś/aś zbanowany/a w regionie.
</notification>
<notification name="NoTeenGridAccess">
Twoje konto nie może zostać połączone z podanym regionem Teen Grid.
@ -3808,7 +3808,7 @@ Zmienić tryb i wyłączyć program?
</notification>
<notification name="ConfirmHideUI">
Ta akcja ukryje wszystkie menu i przyciski. Aby je pokazać użyj skrótu [SHORTCUT] ponownie.
<usetemplate name="okcancelignore" notext="Anuluj" ignoretext="Potwierdź przed ukryciem interfejsu"/>
<usetemplate name="okcancelignore" notext="Anuluj" ignoretext="Potwierdź przed ukryciem interfejsu"/>
</notification>
<notification name="PathfindingLinksets_WarnOnPhantom">
Niektórym z zaznaczonych zbiorów części zostanie przełączony status Widmowy.
@ -4851,7 +4851,7 @@ Będzie można użyć http://opensimulator.org/wiki/inventory aby rozwiązać pr
i kliknij przycisk składania zamówienia.
Będziesz mógł/a dodać metodę płatności w kasie.
<form name="form">
<button name="Continue" text="Kontyntynuj" />
<button name="Continue" text="Kontynuuj" />
<button name="Cancel" text="Anuluj" />
</form>
</notification>
@ -5089,18 +5089,6 @@ Jeśli nie zgadzasz się z niniejszymi warunkami użytkowania, nie należy przep
<notification name="EnableHiDPI">
Włączenie obsługi HiDPI może mieć niekorzystne skutki i pogorszyć wydajność.
</notification>
<notification name="FailedToFindSettings">
Nie można załadować ustawień dla [NAME] z bazy danych.
</notification>

View File

@ -222,7 +222,7 @@ Więcej informacji w naszym FAQ:
http://secondlife.com/viewer-access-faq
</string>
<string name="LoginFailed">
Awaria logowania awaryjnego do świata.
Logowanie nieudane.
Jeśli uważasz, że to błąd, skontaktuj się z obsługą świata.
</string>
<string name="LoginIntermediateOptionalUpdateAvailable">