summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/vcl/svapp.hxx16
-rw-r--r--vcl/inc/svdata.hxx1
-rw-r--r--vcl/source/app/salplug.cxx7
-rw-r--r--vcl/source/app/svapp.cxx12
-rw-r--r--vcl/source/opengl/OpenGLHelper.cxx13
5 files changed, 28 insertions, 21 deletions
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index 6249e3449e6f..c597ba453de3 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -1218,19 +1218,19 @@ public:
/** Enable Console Only mode
- Used to disable Mac specific app init that requires an app bundle.
+ Convenience function to enable headless and bitmap rendering.
*/
static void EnableConsoleOnly();
- /** Determines if console only mode is enabled.
-
- Used to see if Mac specific app init has been disabled.
+ /** Enable software-only bitmap rendering
+ */
+ static void EnableBitmapRendering();
- @returns True if console only mode is on, false if not.
+ /** Determines if bitmap rendering is enabled
- @see EnableConsoleOnly
- */
- static bool IsConsoleOnly();
+ @return True if bitmap rendering is enabled.
+ */
+ static bool IsBitmapRendering();
///@}
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index 21ca3567b56a..b83607f75c44 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -154,6 +154,7 @@ struct ImplSVAppData
bool mbAppQuit = false; // is Application::Quit() called
bool mbSettingsInit = false; // true: Settings are initialized
DialogCancelMode meDialogCancel = DialogCancelMode::Off; // true: All Dialog::Execute() calls will be terminated immediately with return false
+ bool mbRenderToBitmaps = false; // set via svp / headless plugin
/** Controls whether showing any IME status window is toggled on or off.
diff --git a/vcl/source/app/salplug.cxx b/vcl/source/app/salplug.cxx
index a79339cd0ad2..205f5dae0526 100644
--- a/vcl/source/app/salplug.cxx
+++ b/vcl/source/app/salplug.cxx
@@ -243,6 +243,13 @@ SalInstance *CreateSalInstance()
#endif
rtl::Bootstrap::get( "SAL_USE_VCLPLUGIN", aUsePlugin );
+ if (aUsePlugin == "svp")
+ {
+ Application::EnableBitmapRendering();
+#ifndef HEADLESS_VCLPLUG
+ aUsePlugin.clear();
+#endif
+ }
if( !aUsePlugin.isEmpty() )
pInst = tryInstance( aUsePlugin, true );
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index b42c1f158a9f..40ff79b7d70f 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1438,6 +1438,7 @@ const LocaleDataWrapper& Application::GetAppLocaleDataWrapper()
void Application::EnableHeadlessMode( bool dialogsAreFatal )
{
+ assert(GetDialogCancelMode() == DialogCancelMode::Off);
SetDialogCancelMode(
dialogsAreFatal ? DialogCancelMode::Fatal : DialogCancelMode::Silent );
}
@@ -1447,17 +1448,20 @@ bool Application::IsHeadlessModeEnabled()
return IsDialogCancelEnabled() || comphelper::LibreOfficeKit::isActive();
}
-static bool bConsoleOnly = false;
+void Application::EnableBitmapRendering()
+{
+ ImplGetSVData()->maAppData.mbRenderToBitmaps = true;
+}
-bool Application::IsConsoleOnly()
+bool Application::IsBitmapRendering()
{
- return bConsoleOnly;
+ return ImplGetSVData()->maAppData.mbRenderToBitmaps;
}
void Application::EnableConsoleOnly()
{
EnableHeadlessMode(true);
- bConsoleOnly = true;
+ EnableBitmapRendering();
}
static bool bEventTestingMode = false;
diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx
index 588ae70cabe0..882f35d424af 100644
--- a/vcl/source/opengl/OpenGLHelper.cxx
+++ b/vcl/source/opengl/OpenGLHelper.cxx
@@ -956,8 +956,8 @@ bool OpenGLHelper::isVCLOpenGLEnabled()
static bool bEnable = false;
static bool bForceOpenGL = false;
- // If we are a console app, then we don't use OpenGL
- if ( Application::IsConsoleOnly() )
+ // No hardware rendering, so no OpenGL
+ if (Application::IsBitmapRendering())
return false;
//tdf#106155, disable GL while loading certain bitmaps needed for the initial toplevel windows
@@ -988,19 +988,14 @@ bool OpenGLHelper::isVCLOpenGLEnabled()
else if (bSupportsVCLOpenGL)
{
static bool bEnableGLEnv = !!getenv("SAL_ENABLEGL");
- static bool bHeadlessPlugin = []{
- OUString plugin;
- rtl::Bootstrap::get("SAL_USE_VCLPLUGIN", plugin);
- return plugin == "svp";
- }();
bEnable = bEnableGLEnv;
if (officecfg::Office::Common::VCL::UseOpenGL::get())
bEnable = true;
- // Force disable in safe mode or when running with headless plugin
- if (bHeadlessPlugin || Application::IsSafeModeEnabled())
+ // Force disable in safe mode
+ if (Application::IsSafeModeEnabled())
bEnable = false;
bRet = bEnable;