Hi Jim, Windows buildbot breaks now in module bridges:
... component.cxx e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(58) : error C2059: syntax error : '[' e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(58) : error C2143: syntax error : missing ';' before '{' e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(68) : warning C4172: returning address of local variable or temporary e:/slave14/openoffice-win7/build/main/bridges/source/cpp_uno/shared/component.cxx(69) : error C2059: syntax error : ')' ... For more details see: https://ci.apache.org/projects/openoffice/buildlogs/win/main/bridges/wntmsci12.pro/misc/logs/prj.txt Regards, Matthias Am 01.12.20 um 23:01 schrieb j...@apache.org: > This is an automated email from the ASF dual-hosted git repository. > > jim pushed a commit to branch trunk > in repository https://gitbox.apache.org/repos/asf/openoffice.git > > > The following commit(s) were added to refs/heads/trunk by this push: > new d73dd1d Huge updates to macOS UNO bridges, based on FreeBSD and > Linux. > d73dd1d is described below > > commit d73dd1d32e12ca3b96b7bbfff854b742992ff915 > Author: Jim Jagielski <jim...@gmail.com> > AuthorDate: Tue Dec 1 16:59:54 2020 -0500 > > Huge updates to macOS UNO bridges, based on FreeBSD and Linux. > > (cherry picked from commit 37f4cb171557a563bb797a6166dd60f907b367f2) > --- > .../inc/bridges/cpp_uno/shared/vtablefactory.hxx | 2 +- > .../source/cpp_uno/gcc3_freebsd_x86-64/except.cxx | 2 +- > .../source/cpp_uno/s5abi_macosx_x86-64/call.s | 120 > +++++++++++++++++++++ > .../source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx | 68 ++---------- > .../source/cpp_uno/s5abi_macosx_x86-64/except.cxx | 9 +- > .../source/cpp_uno/s5abi_macosx_x86-64/makefile.mk | 6 +- > .../source/cpp_uno/s5abi_macosx_x86-64/share.hxx | 8 +- > .../source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx | 5 +- > main/bridges/source/cpp_uno/shared/component.cxx | 44 +++----- > .../source/cpp_uno/shared/vtablefactory.cxx | 8 +- > main/vcl/aqua/source/app/salinst.cxx | 10 +- > 11 files changed, 169 insertions(+), 113 deletions(-) > > diff --git a/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx > b/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx > index 3fe88e5..dc15fb5 100644 > --- a/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx > +++ b/main/bridges/inc/bridges/cpp_uno/shared/vtablefactory.hxx > @@ -33,7 +33,7 @@ > #include <hash_map> > > /*See: http://people.redhat.com/drepper/selinux-mem.html*/ > -#if defined (LINUX) || defined (FREEBSD) > +#if defined (LINUX) || defined (FREEBSD) || defined(MACOSX) > #define USE_DOUBLE_MMAP > #endif > > diff --git a/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx > b/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx > index 7902bd9..bfe18db 100644 > --- a/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx > +++ b/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/except.cxx > @@ -187,7 +187,7 @@ type_info * RTTI::getRTTI( > typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR > type_info * base_rtti = getRTTI( > (typelib_CompoundTypeDescription > *)pTypeDescr->pBaseTypeDescription ); > rtti = new __si_class_type_info( > - strdup( rttiName ), static_cast<__class_type_info > *>(base_rtti) ); > + strdup( rttiName ), (__class_type_info *)base_rtti ); > } > else > { > diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/call.s > b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/call.s > new file mode 100644 > index 0000000..4801a94 > --- /dev/null > +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/call.s > @@ -0,0 +1,120 @@ > +/************************************************************** > + * > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + * > + *************************************************************/ > + > + .text > + .align 2 > +.globl privateSnippetExecutor > + .type privateSnippetExecutor, @function > +privateSnippetExecutor: > +.LFB3: > + pushq %rbp > +.LCFI0: > + movq %rsp, %rbp > +.LCFI1: > + subq $160, %rsp > +.LCFI2: > + movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + > nFunctionIndex > + > + movq %rdi, -112(%rbp) # Save GP registers > + movq %rsi, -104(%rbp) > + movq %rdx, -96(%rbp) > + movq %rcx, -88(%rbp) > + movq %r8 , -80(%rbp) > + movq %r9 , -72(%rbp) > + > + movsd %xmm0, -64(%rbp) # Save FP registers > + movsd %xmm1, -56(%rbp) > + movsd %xmm2, -48(%rbp) > + movsd %xmm3, -40(%rbp) > + movsd %xmm4, -32(%rbp) > + movsd %xmm5, -24(%rbp) > + movsd %xmm6, -16(%rbp) > + movsd %xmm7, -8(%rbp) > + > + leaq -144(%rbp), %r9 # 6th param: sal_uInt64 * > pRegisterReturn > + leaq 16(%rbp), %r8 # 5rd param: void ** ovrflw > + leaq -64(%rbp), %rcx # 4th param: void ** fpreg > + leaq -112(%rbp), %rdx # 3rd param: void ** gpreg > + movl -148(%rbp), %esi # 2nd param: sal_int32 > nVtableOffset > + movl -152(%rbp), %edi # 1st param: sal_int32 > nFunctionIndex > + > + call cpp_vtable_call > + > + cmp $10, %rax # > typelib_TypeClass_FLOAT > + je .Lfloat > + cmp $11, %rax # > typelib_TypeClass_DOUBLE > + je .Lfloat > + > + movq -144(%rbp), %rax # Return value (int case) > + movq -136(%rbp), %rdx # Return value (int case) > + movq -144(%rbp), %xmm0 # Return value (int case) > + movq -136(%rbp), %xmm1 # Return value (int case) > + jmp .Lfinish > +.Lfloat: > + movlpd -144(%rbp), %xmm0 # Return value (float/double > case) > + > +.Lfinish: > + leave > + ret > +.LFE3: > + .size privateSnippetExecutor, .-privateSnippetExecutor > + # see > http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html > + # for details of the .eh_frame, the "Common Information Entry" and > "Frame Description Entry" formats > + # and http://mentorembedded.github.io/cxx-abi/exceptions.pdf for more > info > + .section .eh_frame,"a",@progbits > +.Lframe1: > + .long .LECIE1-.LSCIE1 > +.LSCIE1: > + .long 0x0 > + .byte 0x1 > + .string "zR" > + .uleb128 0x1 > + .sleb128 -8 > + .byte 0x10 > + .uleb128 0x1 > + .byte 0x1b > + .byte 0xc > + .uleb128 0x7 > + .uleb128 0x8 > + .byte 0x90 > + .uleb128 0x1 > + .align 8 > +.LECIE1: > +.LSFDE1: > + .long .LEFDE1-.LASFDE1 > +.LASFDE1: > + .long .LASFDE1-.Lframe1 > + .long .LFB3-. > + .long .LFE3-.LFB3 > + .uleb128 0x0 > + .byte 0x4 > + .long .LCFI0-.LFB3 > + .byte 0xe > + .uleb128 0x10 > + .byte 0x86 > + .uleb128 0x2 > + .byte 0x4 > + .long .LCFI1-.LCFI0 > + .byte 0xd > + .uleb128 0x6 > + .align 8 > +.LEFDE1: > + .section .note.GNU-stack,"",@progbits > diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx > b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx > index 18d81dc..9c20b7a 100644 > --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx > +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx > @@ -395,70 +395,17 @@ extern "C" typelib_TypeClass cpp_vtable_call( > } > > > //================================================================================================== > +extern "C" void privateSnippetExecutor( ... ); > > -// privateSnippetExecutor() is only called by the trampolines created by > codeSnippet() > -// > -// it saves all the registers used for parameter passing in the x86_64 ABI. > -// Then it uses them to provide the parameters to its cpp_vtable_call() and > -// to handle the return value. > -// > -// This method makes assumptions about the stack layout of the stack frame > above! > - > -extern "C" void privateSnippetExecutor( void ) > -{ > - asm volatile ( > - "subq $160, %%rsp\n\t" > - "movq %%r10, -152(%%rbp)\n\t" // Save (nVtableOffset << 32) + > nFunctionIndex > - > - "movq %%rdi, -112(%%rbp)\n\t" // Save GP registers > - "movq %%rsi, -104(%%rbp)\n\t" > - "movq %%rdx, -96(%%rbp)\n\t" > - "movq %%rcx, -88(%%rbp)\n\t" > - "movq %%r8 , -80(%%rbp)\n\t" > - "movq %%r9 , -72(%%rbp)\n\t" > - > - "movsd %%xmm0, -64(%%rbp)\n\t" // Save FP registers > - "movsd %%xmm1, -56(%%rbp)\n\t" > - "movsd %%xmm2, -48(%%rbp)\n\t" > - "movsd %%xmm3, -40(%%rbp)\n\t" > - "movsd %%xmm4, -32(%%rbp)\n\t" > - "movsd %%xmm5, -24(%%rbp)\n\t" > - "movsd %%xmm6, -16(%%rbp)\n\t" > - "movsd %%xmm7, -8(%%rbp)\n\t" > - > - "leaq -144(%%rbp), %%r9\n\t" // 6th param: sal_uInt64* > pRegisterReturn > - "leaq 16(%%rbp), %%r8\n\t" // 5rd param: void** ovrflw > - "leaq -64(%%rbp), %%rcx\n\t" // 4th param: void** fpreg > - "leaq -112(%%rbp), %%rdx\n\t" // 3rd param: void** gpreg > - "movl -148(%%rbp), %%esi\n\t" // 2nd param: sal_int32 > nVtableOffset > - "movl -152(%%rbp), %%edi\n\t" // 1st param: sal_int32 > nFunctionIndex > - > - "call _cpp_vtable_call\n\t" > - > - "cmp $10, %%rax\n\t" // > typelib_TypeClass_FLOAT > - "je .Lfloat\n\t" > - "cmp $11, %%rax\n\t" // > typelib_TypeClass_DOUBLE > - "je .Lfloat\n\t" > - > - "movq -144(%%rbp), %%rax\n\t" // Return value (int case) > - "movq -136(%%rbp), %%rdx\n\t" // Return value (int case) > - "movq -144(%%rbp), %%xmm0\n\t" // Return value (int case) > - "movq -136(%%rbp), %%xmm1\n\t" // Return value (int case) > - "jmp .Lfinish\n" > -".Lfloat:\n\t" > - "movlpd -144(%%rbp), %%xmm0\n" // Return value (float/double > case) > -".Lfinish:\n\t" > - "addq $160, %%rsp\n" > - : > - : > - : "rax", "r10", "xmm0" ); > -} > - > -static const int codeSnippetSize = 24; > +const int codeSnippetSize = 24; > > // Generate a trampoline that redirects method calls to > // privateSnippetExecutor(). > // > +// privateSnippetExecutor() saves all the registers that are used for > +// parameter passing on x86_64, and calls the cpp_vtable_call(). > +// When it returns, privateSnippetExecutor() sets the return value. > +// > // Note: The code snippet we build here must not create a stack frame, > // otherwise the UNO exceptions stop working thanks to non-existing > // unwinding info. > @@ -515,11 +462,10 @@ > bridges::cpp_uno::shared::VtableFactory::initializeBlock( > > //================================================================================================== > > unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( > - Slot ** slots, unsigned char * code, /*sal_PtrDiff writetoexecdiff,*/ > + Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff, > typelib_InterfaceTypeDescription const * type, sal_Int32 > nFunctionOffset, > sal_Int32 functionCount, sal_Int32 nVtableOffset ) > { > - static const sal_PtrDiff writetoexecdiff = 0; > (*slots) -= functionCount; > Slot * s = *slots; > for ( sal_Int32 nPos = 0; nPos < type->nMembers; ++nPos ) > diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx > b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx > index f9a11ef..0d64e70 100644 > --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx > +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx > @@ -141,7 +141,7 @@ type_info * RTTI::getRTTI( > typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR > t_rtti_map::const_iterator iFind( m_rttis.find( unoName ) ); > if (iFind == m_rttis.end()) > { > - // build the mangled name for unoName's RTTI typeinfo symbol > + // RTTI symbol > OStringBuffer buf( 64 ); > buf.append( RTL_CONSTASCII_STRINGPARAM("_ZTIN") ); > sal_Int32 index = 0; > @@ -174,7 +174,7 @@ type_info * RTTI::getRTTI( > typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR > // symbol and rtti-name is nearly identical, > // the symbol is prefixed with _ZTI > char const * rttiName = symName.getStr() +4; > -#if OSL_DEBUG_LEVEL >= 1 > +#if OSL_DEBUG_LEVEL > 1 > fprintf( stderr,"generated rtti for %s\n", rttiName ); > const OString aCUnoName = OUStringToOString( unoName, > RTL_TEXTENCODING_UTF8); > OSL_TRACE( "TypeInfo for \"%s\" not found and cannot be > generated.\n", aCUnoName.getStr()); > @@ -200,8 +200,9 @@ type_info * RTTI::getRTTI( > typelib_CompoundTypeDescription *pTypeDescr ) SAL_THR > rtti = NULL; > #endif > > - bool bOK = m_generatedRttis.insert( t_rtti_map::value_type( > unoName, rtti )).second; > - OSL_ENSURE( bOK, "### inserting new generated rtti failed?!" > ); > + pair< t_rtti_map::iterator, bool > insertion( > + m_generatedRttis.insert( t_rtti_map::value_type( > unoName, rtti ) ) ); > + OSL_ENSURE( insertion.second, "### inserting new generated > rtti failed?!" ); > } > else // taking already generated rtti > { > diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk > b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk > index 7f92ad1..7f64991 100644 > --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk > +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk > @@ -48,7 +48,8 @@ SLOFILES= \ > $(SLO)$/abi.obj \ > $(SLO)$/except.obj \ > $(SLO)$/cpp2uno.obj \ > - $(SLO)$/uno2cpp.obj > + $(SLO)$/uno2cpp.obj \ > + $(SLO)$/call.obj > > SHL1TARGET= $(TARGET) > > @@ -70,3 +71,6 @@ SHL1STDLIBS= \ > > .INCLUDE : target.mk > > +$(SLO)$/%.obj: %.s > + $(CC) -c -o $(SLO)$/$(@:b).o $< > + touch $@ > diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx > b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx > index b64609d..c3c84d6 100644 > --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx > +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/share.hxx > @@ -36,11 +36,11 @@ void dummy_can_throw_anything( char const * ); > > struct _Unwind_Exception > { > - unsigned long exception_class; > + unsigned exception_class __attribute__((__mode__(__DI__))); > void * exception_cleanup; > - uintptr_t private_1; > - uintptr_t private_2; > -}; > + unsigned private_1 __attribute__((__mode__(__word__))); > + unsigned private_2 __attribute__((__mode__(__word__))); > +} __attribute__((__aligned__)); > > struct __cxa_exception > { > diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx > b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx > index 6d7d581..a58791c 100644 > --- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx > +++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/uno2cpp.cxx > @@ -149,9 +149,8 @@ static void callVirtualMethod(void * pThis, sal_uInt32 > nVtableIndex, > : > : "m" ( pMethod ), "m" ( pGPR ), "m" ( pFPR ), "m" ( nFPR ), > "m" ( rax ), "m" ( rdx ), "m" ( xmm0 ), "m" ( xmm1 ), > - "m" (pCallStack) // dummy input to prevent the compiler from > optimizing it out > - : "rax", "rbx", "rcx", "rdx", "rdi", "rsi", "r8", "r9", > - "r10", "r11", "r10", "r12", "r13", "r14", "r15", "rbx", > + "m" (pCallStack) // dummy input to prevent the compiler from > optimizing the alloca out > + : "rax", "rdi", "rsi", "rdx", "rcx", "r8", "r9", "r11", > "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7" > ); > > diff --git a/main/bridges/source/cpp_uno/shared/component.cxx > b/main/bridges/source/cpp_uno/shared/component.cxx > index dfa5a8d..da729d4 100644 > --- a/main/bridges/source/cpp_uno/shared/component.cxx > +++ b/main/bridges/source/cpp_uno/shared/component.cxx > @@ -53,42 +53,22 @@ rtl_StandardModuleCount g_moduleCount = MODULE_COUNT_INIT; > > namespace { > > -#if (defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) \ > - || (defined(__GNUC__) && defined(__APPLE__)) > -static ::rtl::OUString * s_pStaticOidPart = 0; > -#endif > - > const ::rtl::OUString & SAL_CALL cppu_cppenv_getStaticOIdPart() SAL_THROW( > () ) > { > -#if ! ((defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) \ > - || (defined(__GNUC__) && defined(__APPLE__))) > - static ::rtl::OUString * s_pStaticOidPart = 0; > -#endif > - if (! s_pStaticOidPart) > - { > - ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); > - if (! s_pStaticOidPart) > + static ::rtl::OUString s_aStaticOidPart = []() { > + ::rtl::OUStringBuffer aRet( 64 ); > + aRet.appendAscii( RTL_CONSTASCII_STRINGPARAM("];") ); > + // good guid > + sal_uInt8 ar[16]; > + ::rtl_getGlobalProcessId(ar); > + for ( sal_Int32 i = 0; i < 16; ++i ) > { > - ::rtl::OUStringBuffer aRet( 64 ); > - aRet.appendAscii( RTL_CONSTASCII_STRINGPARAM("];") ); > - // good guid > - sal_uInt8 ar[16]; > - ::rtl_getGlobalProcessId( ar ); > - for ( sal_Int32 i = 0; i < 16; ++i ) > - { > - aRet.append( (sal_Int32)ar[i], 16 ); > - } > -#if (defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500)) \ > - || (defined(__GNUC__) && defined(__APPLE__)) > - s_pStaticOidPart = new ::rtl::OUString( > aRet.makeStringAndClear() ); > -#else > - static ::rtl::OUString s_aStaticOidPart( > - aRet.makeStringAndClear() ); > - s_pStaticOidPart = &s_aStaticOidPart; > -#endif > + aRet.append( (sal_Int32)ar[i], 16 ); > } > - } > - return *s_pStaticOidPart; > + return aRet.makeStringAndClear(); > + }(); > + return s_aStaticOidPart; > + > } > > } > diff --git a/main/bridges/source/cpp_uno/shared/vtablefactory.cxx > b/main/bridges/source/cpp_uno/shared/vtablefactory.cxx > index f4d6c56..35bad98 100644 > --- a/main/bridges/source/cpp_uno/shared/vtablefactory.cxx > +++ b/main/bridges/source/cpp_uno/shared/vtablefactory.cxx > @@ -96,6 +96,11 @@ extern "C" void * SAL_CALL allocExec(rtl_arena_type *, > sal_Size * size) { > sal_Size n = (*size + (pagesize - 1)) & ~(pagesize - 1); > void * p; > #if defined SAL_UNX > +#if defined MACOSX > + p = mmap( > + 0, n, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON | > MAP_JIT, -1, > + 0); > +#else > p = mmap( > 0, n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, > 0); > @@ -107,6 +112,7 @@ extern "C" void * SAL_CALL allocExec(rtl_arena_type *, > sal_Size * size) { > munmap (static_cast<char*>(p), n); > p = 0; > } > +#endif > #elif defined SAL_W32 > p = VirtualAlloc(0, n, MEM_COMMIT, PAGE_EXECUTE_READWRITE); > #elif defined(SAL_OS2) > @@ -195,7 +201,7 @@ VtableFactory::VtableFactory(): m_arena( > rtl_arena_create( > "bridges::cpp_uno::shared::VtableFactory", > sizeof (void *), // to satisfy alignment requirements > - 0, reinterpret_cast< rtl_arena_type * >(-1), allocExec, freeExec, 0)) > + 0, reinterpret_cast< rtl_arena_type * >( 0 ), allocExec, freeExec, > 0)) > { > if (m_arena == 0) { > throw std::bad_alloc(); > diff --git a/main/vcl/aqua/source/app/salinst.cxx > b/main/vcl/aqua/source/app/salinst.cxx > index 66ff6af..8ba2d56 100644 > --- a/main/vcl/aqua/source/app/salinst.cxx > +++ b/main/vcl/aqua/source/app/salinst.cxx > @@ -781,18 +781,18 @@ void AquaSalInstance::Yield( bool bWait, bool > bHandleAllCurrentEvents ) > } > osl_setCondition( maWaitingYieldCond ); > } > - else if( bWait ) > + else if( bWait && maWaitingYieldCond ) > { > // #i103162# > // wait until any thread (most likely the main thread) > - // has dispatched an event, cop out at 200 ms > + // has dispatched an event, cop out at 500 ms > + sal_uLong nCount; > + TimeValue aVal = { 0, 500000000 }; > osl_resetCondition( maWaitingYieldCond ); > - TimeValue aVal = { 0, 200000000 }; > - sal_uLong nCount = ReleaseYieldMutex(); > + nCount = ReleaseYieldMutex(); > osl_waitCondition( maWaitingYieldCond, &aVal ); > AcquireYieldMutex( nCount ); > } > - > // we get some apple events way too early > // before the application is ready to handle them, > // so their corresponding application events need to be delayed >
smime.p7s
Description: S/MIME Cryptographic Signature