Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Feb 2017 22:22:21 +0000 (UTC)
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r433677 - in head/editors/libreoffice: . files
Message-ID:  <201702082222.v18MMLlt097664@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jkim
Date: Wed Feb  8 22:22:21 2017
New Revision: 433677
URL: https://svnweb.freebsd.org/changeset/ports/433677

Log:
  Do not apply the kludge for PR214473 on all supported FreeBSD versions.
  These patches actually reintroduced an upstream bug.
  
  https://gerrit.libreoffice.org/22291
  
  PR:		214473

Added:
  head/editors/libreoffice/files/extrapatch-vcl_inc_unx_gtk_gtkinst.hxx
     - copied unchanged from r433676, head/editors/libreoffice/files/patch-vcl_inc_unx_gtk_gtkinst.hxx
  head/editors/libreoffice/files/extrapatch-vcl_unx_gtk_gtkinst.cxx
     - copied unchanged from r433676, head/editors/libreoffice/files/patch-vcl_unx_gtk_gtkinst.cxx
Deleted:
  head/editors/libreoffice/files/patch-vcl_inc_unx_gtk_gtkinst.hxx
  head/editors/libreoffice/files/patch-vcl_unx_gtk_gtkinst.cxx
Modified:
  head/editors/libreoffice/Makefile

Modified: head/editors/libreoffice/Makefile
==============================================================================
--- head/editors/libreoffice/Makefile	Wed Feb  8 21:49:19 2017	(r433676)
+++ head/editors/libreoffice/Makefile	Wed Feb  8 22:22:21 2017	(r433677)
@@ -2,7 +2,7 @@
 
 .include "${.CURDIR}/Makefile.common"
 
-PORTREVISION=	3
+PORTREVISION=	4
 MASTER_SITES=	http://download.documentfoundation.org/libreoffice/src/${PORTVERSION}/ \
 		http://dev-www.libreoffice.org/src/:src \
 		http://dev-www.libreoffice.org/extern/:ext
@@ -273,6 +273,13 @@ _MAKE_JOBS=	#
 .if ${COMPILER_FEATURES:Mlibstdc++}
 BROKEN=		Build with system libstdc++ is unsupported
 .endif
+.if (${OSVERSION} >= 1200000 && ${OSVERSION} < 1200003) || \
+    (${OSVERSION} >= 1100500 && ${OSVERSION} < 1100501) || \
+    (${OSVERSION} >= 1100000 && ${OSVERSION} < 1100122) || \
+    ${OSVERSION} < 1003506
+EXTRA_PATCHES=	${PATCHDIR}/extrapatch-vcl_inc_unx_gtk_gtkinst.hxx \
+		${PATCHDIR}/extrapatch-vcl_unx_gtk_gtkinst.cxx
+.endif
 .endif # FreeBSD
 
 .if ${COMPILER_TYPE} == "clang"

Copied: head/editors/libreoffice/files/extrapatch-vcl_inc_unx_gtk_gtkinst.hxx (from r433676, head/editors/libreoffice/files/patch-vcl_inc_unx_gtk_gtkinst.hxx)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/libreoffice/files/extrapatch-vcl_inc_unx_gtk_gtkinst.hxx	Wed Feb  8 22:22:21 2017	(r433677, copy of r433676, head/editors/libreoffice/files/patch-vcl_inc_unx_gtk_gtkinst.hxx)
@@ -0,0 +1,11 @@
+--- vcl/inc/unx/gtk/gtkinst.hxx.orig	2016-10-28 14:50:26 UTC
++++ vcl/inc/unx/gtk/gtkinst.hxx
+@@ -46,7 +46,7 @@ class GtkPrintWrapper;
+ class GenPspGraphics;
+ class GtkYieldMutex : public SalYieldMutex
+ {
+-    thread_local static std::stack<sal_uIntPtr> yieldCounts;
++    std::list<sal_uLong> aYieldStack;
+ 
+ public:
+          GtkYieldMutex() {}

Copied: head/editors/libreoffice/files/extrapatch-vcl_unx_gtk_gtkinst.cxx (from r433676, head/editors/libreoffice/files/patch-vcl_unx_gtk_gtkinst.cxx)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/editors/libreoffice/files/extrapatch-vcl_unx_gtk_gtkinst.cxx	Wed Feb  8 22:22:21 2017	(r433677, copy of r433676, head/editors/libreoffice/files/patch-vcl_unx_gtk_gtkinst.cxx)
@@ -0,0 +1,42 @@
+--- vcl/unx/gtk/gtkinst.cxx.orig	2016-11-13 15:24:04 UTC
++++ vcl/unx/gtk/gtkinst.cxx
+@@ -298,28 +298,29 @@ SalPrinter* GtkInstance::CreatePrinter( 
+  * for each pair, so we can accurately restore
+  * it later.
+  */
+-thread_local std::stack<sal_uIntPtr> GtkYieldMutex::yieldCounts;
+ 
+ void GtkYieldMutex::ThreadsEnter()
+ {
+     acquire();
+-    if (!yieldCounts.empty()) {
+-        auto n = yieldCounts.top();
+-        yieldCounts.pop();
+-        for (; n != 0; --n) {
++    if( !aYieldStack.empty() )
++    { /* Previously called ThreadsLeave() */
++        sal_uLong nCount = aYieldStack.front();
++        aYieldStack.pop_front();
++        while( nCount-- > 1 )
+             acquire();
+-        }
+     }
+ }
+ 
+ void GtkYieldMutex::ThreadsLeave()
+ {
++    aYieldStack.push_front( mnCount );
+     assert(mnCount != 0);
+-    auto n = mnCount - 1;
+-    yieldCounts.push(n);
+-    for (sal_uIntPtr i = 0; i != n + 1; ++i) {
++    SAL_WARN_IF(
++        mnThreadId && mnThreadId != osl::Thread::getCurrentIdentifier(),
++        "vcl.gtk", "other thread " << mnThreadId << " owns the mutex");
++    while( mnCount > 1 )
+         release();
+-    }
++    release();
+ }
+ 
+ SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702082222.v18MMLlt097664>