Rebased ref, commits from common ancestor: commit 8f6ba18b96f89100bf4cc4f00e5167817dc7be11 Author: Thorsten Behrens <thorsten.behr...@cib.de> AuthorDate: Tue Sep 17 00:36:13 2019 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Tue Sep 17 00:36:13 2019 +0200
Bump version to 6.1.7.5 Change-Id: I499cddc2e39c909f5673672c090ec834b0743f0f diff --git a/configure.ac b/configure.ac index 0b3c2f61b7b4..c159c4048da6 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ dnl in order to create a configure script. # several non-alphanumeric characters, those are split off and used only for the # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea. -AC_INIT([LibreOffice powered by CIB],[6.1.7.4],[],[],[https://libreoffice.cib.eu/]) +AC_INIT([LibreOffice powered by CIB],[6.1.7.5],[],[],[https://libreoffice.cib.eu/]) AC_PREREQ([2.59]) commit e6bdbd6f62d99e25360de7989bde34985c83c1af Author: Michael Stahl <michael.st...@cib.de> AuthorDate: Tue Jul 2 18:31:46 2019 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Tue Sep 17 00:35:05 2019 +0200 sw: fix moving of at-page anchored flys to different page The problem is that some flys are anchored at a page with Y pos 35k and are moved to a page with Y pos 17k, while retaining mbFrameAreaPositionValid=true and their existing Y position. The flys will never be painted or even invalidated again because their position is off-page. This is somehow a regression from commit 0b53f794ffb2550288610b9488f11fd21ab85aae - without the new mutation of an empty-page to a normal page due to at-page flys by resetting m_bEmptyPage in SwPageFrame::UpdateAttr_() on it the problem didn't happen. Due to the above commit, the page 3 is not an empty-page any more as it has 2 flys anchored on it; previously those flys were moved (only in the layout, not in the model!) to page 4 by some funny code in SwRootFrame::AssertPageFlys(), which at first glance seems like an improvement. Change-Id: Ia071931b26e64245f90233232dd2ac0d64365ce6 Reviewed-on: https://gerrit.libreoffice.org/75009 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@cib.de> (cherry picked from commit 5cee586a97a11c23dd252accc42099bd5e9b4187) Reviewed-on: https://gerrit.libreoffice.org/75049 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx index 36bc46ba762c..fea1582c226c 100644 --- a/sw/source/core/layout/flylay.cxx +++ b/sw/source/core/layout/flylay.cxx @@ -854,6 +854,8 @@ void SwPageFrame::AppendFlyToPage( SwFlyFrame *pNew ) pNew->InvalidatePage( this ); // #i28701# pNew->UnlockPosition(); + // needed to reposition at-page anchored flys moved from different page + pNew->InvalidateObjPos(); // Notify accessible layout. That's required at this place for // frames only where the anchor is moved. Creation of new frames commit dd928e41f7b34f6fa0c01a94d20f4f33535f9797 Author: Jan-Marek Glogowski <jan-marek.glogow...@extern.cib.de> AuthorDate: Wed Sep 11 14:35:19 2019 +0200 Commit: Thorsten Behrens <thorsten.behr...@cib.de> CommitDate: Tue Sep 17 00:35:04 2019 +0200 WIN allow setting a memory limit for soffice.bin This adds a Win32 section and two keys to the bootstrap.ini, which can be used to apply a memory limit to the soffice.bin process on Windows. Per default the limit won't affect any sub-processes, because the 2nd key adds JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK to the Jobs' flag list. To activte the limit, extend the bootstrap.ini like this: [Win32] LimitMaximumMemoryInMB=0 ExcludeChildProcessesFromLimit=true and adapt the values to your needs. Zero disables the limit. Reviewed-on: https://gerrit.libreoffice.org/78819 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de> (cherry picked from commit 6df7568e46b7f307ad6ae94730809fe63a6981a6) Change-Id: Ic474c6d6cdfe5ff3cfadbe6614030442171df1ae Reviewed-on: https://gerrit.libreoffice.org/78885 Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Tested-by: Thorsten Behrens <thorsten.behr...@cib.de> diff --git a/desktop/Executable_soffice.mk b/desktop/Executable_soffice.mk index d1847d7bf76a..5c9a081ff22e 100644 --- a/desktop/Executable_soffice.mk +++ b/desktop/Executable_soffice.mk @@ -11,6 +11,10 @@ $(eval $(call gb_Executable_Executable,soffice)) $(eval $(call gb_Executable_set_targettype_gui,soffice,YES)) +$(eval $(call gb_Executable_use_externals,soffice,\ + boost_headers \ +)) + $(eval $(call gb_Executable_use_system_win32_libs,soffice,\ advapi32 \ shell32 \ diff --git a/desktop/win32/source/officeloader/officeloader.cxx b/desktop/win32/source/officeloader/officeloader.cxx index cd471ca2a5f9..728ad9faa7f3 100644 --- a/desktop/win32/source/officeloader/officeloader.cxx +++ b/desktop/win32/source/officeloader/officeloader.cxx @@ -23,6 +23,10 @@ #include <stdlib.h> #include <desktop/exithelper.h> +#include <fstream> +#include <boost/property_tree/ptree.hpp> +#include <boost/property_tree/ini_parser.hpp> + #include "../loader.hxx" static LPWSTR *GetCommandArgs( int *pArgc ) @@ -65,6 +69,47 @@ int WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int ) cwdLen = 0; } + // read limit values from bootstrap.ini + unsigned int nMaxMemoryInMB = 0; + bool bExcludeChildProcesses = true; + + const WCHAR* szIniFile = L"\\bootstrap.ini"; + const size_t nDirLen = wcslen(szIniDirectory); + if (wcslen(szIniFile) + nDirLen < MAX_PATH) + { + WCHAR szBootstrapIni[MAX_PATH]; + wcscpy(szBootstrapIni, szIniDirectory); + wcscpy(&szBootstrapIni[nDirLen], szIniFile); + + try + { + boost::property_tree::ptree pt; + std::ifstream aFile(szBootstrapIni); + boost::property_tree::ini_parser::read_ini(aFile, pt); + nMaxMemoryInMB = pt.get("Win32.LimitMaximumMemoryInMB", nMaxMemoryInMB); + bExcludeChildProcesses = pt.get("Win32.ExcludeChildProcessesFromLimit", bExcludeChildProcesses); + } + catch (...) + { + nMaxMemoryInMB = 0; + } + } + + // create a Windows JobObject with a memory limit + HANDLE hJobObject = NULL; + if (nMaxMemoryInMB > 0) + { + JOBOBJECT_EXTENDED_LIMIT_INFORMATION aJobLimit; + aJobLimit.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_JOB_MEMORY; + if (bExcludeChildProcesses) + aJobLimit.BasicLimitInformation.LimitFlags |= JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK; + aJobLimit.JobMemoryLimit = nMaxMemoryInMB * 1024 * 1024; + hJobObject = CreateJobObjectW(NULL, NULL); + if (hJobObject != NULL) + SetInformationJobObject(hJobObject, JobObjectExtendedLimitInformation, &aJobLimit, + sizeof(JOBOBJECT_EXTENDED_LIMIT_INFORMATION)); + } + do { if ( bFirst ) { @@ -157,6 +202,9 @@ int WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int ) { DWORD dwWaitResult; + if (hJobObject) + AssignProcessToJobObject(hJobObject, aProcessInfo.hProcess); + do { // On Windows XP it seems as the desktop calls WaitForInputIdle after "OpenWidth" so we have to do so @@ -180,6 +228,10 @@ int WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int ) } } while ( fSuccess && ( EXITHELPER_CRASH_WITH_RESTART == dwExitCode || EXITHELPER_NORMAL_RESTART == dwExitCode )); + + if (hJobObject) + CloseHandle(hJobObject); + delete[] lpCommandLine; LocalFree(argv); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits