Don't waste time in macxp_resolveAlias() on files inside the app bundle
LibreOffice uses its low-level API to look up files inside the app bundle thousands of times, all the time, and especially when starting something. Both when the process starts, and when a specific aspects of the application starts (like after typing a first character into a Writer document in a session). Having all those, too, go through this alias (bookmark) resolve dance is just insane. There won't be any aliases (bookmarks) there. This shaves almost a second from the delay after typing the first character into a Writer document in a session. There is still a noticeable delay left, though, likely mostly caused by Python (Lightproof) initialisation slowness. (It's cross-platform.) I would say that it is a bit questionable whether the macxp_resolveAlias() functionality is worth it at all, even. Change-Id: I2461141c6b58738befd0db4902eb25e63b788b79
This commit is contained in:
parent
68573b6e06
commit
3b6905e37a
3 changed files with 17 additions and 2 deletions
|
@ -179,21 +179,22 @@ $(eval $(call gb_Library_add_exception_objects,sal,\
|
|||
sal/osl/unx/security \
|
||||
sal/osl/unx/signal \
|
||||
sal/osl/unx/socket \
|
||||
sal/osl/unx/system \
|
||||
sal/osl/unx/tempfile \
|
||||
sal/osl/unx/thread \
|
||||
sal/osl/unx/time \
|
||||
$(if $(filter-out ANDROID IOS,$(OS)), sal/osl/unx/salinit) \
|
||||
))
|
||||
|
||||
# Note that the uunxapi.mm file just includes the uunxapi.cxx one
|
||||
# Note that the uunxapi.mm file just includes the uunxapi.cxx one. Ditto for system.mm
|
||||
ifeq ($(OS),MACOSX)
|
||||
$(eval $(call gb_Library_add_objcxxobjects,sal,\
|
||||
sal/osl/unx/uunxapi \
|
||||
sal/osl/unx/system \
|
||||
))
|
||||
else
|
||||
$(eval $(call gb_Library_add_exception_objects,sal,\
|
||||
sal/osl/unx/uunxapi \
|
||||
sal/osl/unx/system \
|
||||
))
|
||||
endif
|
||||
|
||||
|
|
|
@ -37,6 +37,10 @@
|
|||
#define RTL_MUTEX_LOCK
|
||||
#define RTL_MUTEX_UNLOCK
|
||||
|
||||
#include <premac.h>
|
||||
#include <Foundation/Foundation.h>
|
||||
#include <postmac.h>
|
||||
|
||||
#else //defined(MACOSX)
|
||||
|
||||
static pthread_mutex_t getrtl_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
@ -162,6 +166,15 @@ int macxp_resolveAlias(char *path, int buflen)
|
|||
CFErrorRef cferror;
|
||||
CFDataRef cfbookmark;
|
||||
|
||||
// Don't even try anything for files inside the app bundle. Just a
|
||||
// waste of time.
|
||||
|
||||
static const char * const appBundle = [[[NSBundle mainBundle] bundlePath] UTF8String];
|
||||
|
||||
const size_t appBundleLen = strlen(appBundle);
|
||||
if (strncmp(path, appBundle, appBundleLen) == 0 && path[appBundleLen] == '/')
|
||||
return 0;
|
||||
|
||||
char *unprocessedPath = path;
|
||||
|
||||
if ( *unprocessedPath == '/' )
|
||||
|
|
1
sal/osl/unx/system.mm
Normal file
1
sal/osl/unx/system.mm
Normal file
|
@ -0,0 +1 @@
|
|||
#include "system.cxx"
|
Loading…
Reference in a new issue