parent
23702dd228
commit
c4db993e36
@ -1,30 +0,0 @@
|
|||||||
From 63c29ff0adfc3893adf8bcb8934720312aaf11e8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Noel Grandin <noel@peralex.com>
|
|
||||||
Date: Mon, 20 Jul 2015 10:55:59 +0200
|
|
||||||
Subject: [PATCH] fix linux buildbot
|
|
||||||
|
|
||||||
the GTK3 version check for the GDK_IS_X11_DISPLAY macro
|
|
||||||
does not appear to work well on all the machines
|
|
||||||
|
|
||||||
Change-Id: I7020afdca1b270f89910753737c2c70b61453b34
|
|
||||||
---
|
|
||||||
vcl/unx/gtk/window/gtksalframe.cxx | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
index 2abc94f..2cb31bc 100644
|
|
||||||
--- a/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
@@ -105,8 +105,8 @@
|
|
||||||
#define IS_WIDGET_MAPPED GTK_WIDGET_MAPPED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#if !GTK_CHECK_VERSION(3,10,0)
|
|
||||||
#define GDK_WINDOWING_X11
|
|
||||||
+#ifndef GDK_IS_X11_DISPLAY
|
|
||||||
#define GDK_IS_X11_DISPLAY(foo) (true)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
@ -1,130 +0,0 @@
|
|||||||
From c19e079bc1a2cce977bd0e2bbba5901108180615 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
||||||
Date: Fri, 24 Jul 2015 12:22:14 +0100
|
|
||||||
Subject: [PATCH] gtk3: draw/paint to the fixed container
|
|
||||||
|
|
||||||
which fills the toplevel window, rather than directly to the toplevel window.
|
|
||||||
|
|
||||||
It makes no difference for X, but for wayland the window decorations are part
|
|
||||||
of the toplevel window, dropping down a level means we don't draw out menu bar
|
|
||||||
under the window decoration space
|
|
||||||
|
|
||||||
Change-Id: Icec400efacd16b5d901107c13b6fa90c59cad0e6
|
|
||||||
(cherry picked from commit 298c089df77d9afe2cf86bb7a6a8544a0151e8c5)
|
|
||||||
---
|
|
||||||
vcl/inc/unx/gtk/gtkframe.hxx | 2 +-
|
|
||||||
vcl/unx/gtk/window/gtksalframe.cxx | 35 ++++++++++++++++++-----------------
|
|
||||||
2 files changed, 19 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
|
|
||||||
index 6797ea82..4977a7c 100644
|
|
||||||
--- a/vcl/inc/unx/gtk/gtkframe.hxx
|
|
||||||
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
|
|
||||||
@@ -173,6 +173,7 @@ class GtkSalFrame : public SalFrame, public X11WindowProvider
|
|
||||||
|
|
||||||
SalX11Screen m_nXScreen;
|
|
||||||
GtkWidget* m_pWindow;
|
|
||||||
+ GtkFixed* m_pFixedContainer;
|
|
||||||
GdkWindow* m_pForeignParent;
|
|
||||||
GdkNativeWindow m_aForeignParentWindow;
|
|
||||||
GdkWindow* m_pForeignTopLevel;
|
|
||||||
@@ -180,7 +181,6 @@ class GtkSalFrame : public SalFrame, public X11WindowProvider
|
|
||||||
Pixmap m_hBackgroundPixmap;
|
|
||||||
sal_uLong m_nStyle;
|
|
||||||
SalExtStyle m_nExtStyle;
|
|
||||||
- GtkFixed* m_pFixedContainer;
|
|
||||||
GtkSalFrame* m_pParent;
|
|
||||||
std::list< GtkSalFrame* > m_aChildren;
|
|
||||||
GdkWindowState m_nState;
|
|
||||||
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
index ba2f79b..b99d48d 100644
|
|
||||||
--- a/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
@@ -414,7 +414,7 @@ void GtkSalFrame::doKeyCallback( guint state,
|
|
||||||
if (keyval == GDK_0)
|
|
||||||
{
|
|
||||||
fprintf( stderr, "force widget_queue_draw\n");
|
|
||||||
- gtk_widget_queue_draw (m_pWindow);
|
|
||||||
+ gtk_widget_queue_draw (m_pFixedContainer);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (keyval == GDK_1)
|
|
||||||
@@ -1034,12 +1034,25 @@ void GtkSalFrame::updateScreenNumber()
|
|
||||||
|
|
||||||
void GtkSalFrame::InitCommon()
|
|
||||||
{
|
|
||||||
+ // add the fixed container child,
|
|
||||||
+ // fixed is needed since we have to position plugin windows
|
|
||||||
+ m_pFixedContainer = GTK_FIXED(g_object_new( ooo_fixed_get_type(), NULL ));
|
|
||||||
+ gtk_container_add( GTK_CONTAINER(m_pWindow), GTK_WIDGET(m_pFixedContainer) );
|
|
||||||
+
|
|
||||||
+ gtk_widget_set_app_paintable(GTK_WIDGET(m_pFixedContainer), true);
|
|
||||||
+ /*non-X11 displays won't show anything at all without double-buffering
|
|
||||||
+ enabled*/
|
|
||||||
+ if (GDK_IS_X11_DISPLAY(getGdkDisplay()))
|
|
||||||
+ gtk_widget_set_double_buffered(GTK_WIDGET(m_pFixedContainer), false);
|
|
||||||
+ gtk_widget_set_redraw_on_allocate(GTK_WIDGET(m_pFixedContainer), false);
|
|
||||||
+
|
|
||||||
+
|
|
||||||
// connect signals
|
|
||||||
g_signal_connect( G_OBJECT(m_pWindow), "style-set", G_CALLBACK(signalStyleSet), this );
|
|
||||||
g_signal_connect( G_OBJECT(m_pWindow), "button-press-event", G_CALLBACK(signalButton), this );
|
|
||||||
g_signal_connect( G_OBJECT(m_pWindow), "button-release-event", G_CALLBACK(signalButton), this );
|
|
||||||
#if GTK_CHECK_VERSION(3,0,0)
|
|
||||||
- g_signal_connect( G_OBJECT(m_pWindow), "draw", G_CALLBACK(signalDraw), this );
|
|
||||||
+ g_signal_connect( G_OBJECT(m_pFixedContainer), "draw", G_CALLBACK(signalDraw), this );
|
|
||||||
// g_signal_connect( G_OBJECT(m_pWindow), "state-flags-changed", G_CALLBACK(signalFlagsChanged), this );
|
|
||||||
#if GTK_CHECK_VERSION(3,14,0)
|
|
||||||
GtkGesture *pSwipe = gtk_gesture_swipe_new(m_pWindow);
|
|
||||||
@@ -1055,7 +1068,7 @@ void GtkSalFrame::InitCommon()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
- g_signal_connect( G_OBJECT(m_pWindow), "expose-event", G_CALLBACK(signalExpose), this );
|
|
||||||
+ g_signal_connect( G_OBJECT(m_pFixedContainer), "expose-event", G_CALLBACK(signalExpose), this );
|
|
||||||
#endif
|
|
||||||
g_signal_connect( G_OBJECT(m_pWindow), "focus-in-event", G_CALLBACK(signalFocus), this );
|
|
||||||
g_signal_connect( G_OBJECT(m_pWindow), "focus-out-event", G_CALLBACK(signalFocus), this );
|
|
||||||
@@ -1097,21 +1110,12 @@ void GtkSalFrame::InitCommon()
|
|
||||||
m_nAppActionGroupExportId = 0;
|
|
||||||
m_nHudAwarenessId = 0;
|
|
||||||
|
|
||||||
- gtk_widget_set_app_paintable( m_pWindow, TRUE );
|
|
||||||
- gtk_widget_set_double_buffered( m_pWindow, FALSE );
|
|
||||||
- gtk_widget_set_redraw_on_allocate( m_pWindow, FALSE );
|
|
||||||
-
|
|
||||||
gtk_widget_add_events( m_pWindow,
|
|
||||||
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
|
|
||||||
GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
|
|
||||||
GDK_VISIBILITY_NOTIFY_MASK | GDK_SCROLL_MASK
|
|
||||||
);
|
|
||||||
|
|
||||||
- // add the fixed container child,
|
|
||||||
- // fixed is needed since we have to position plugin windows
|
|
||||||
- m_pFixedContainer = GTK_FIXED(g_object_new( ooo_fixed_get_type(), NULL ));
|
|
||||||
- gtk_container_add( GTK_CONTAINER(m_pWindow), GTK_WIDGET(m_pFixedContainer) );
|
|
||||||
-
|
|
||||||
// show the widgets
|
|
||||||
gtk_widget_show( GTK_WIDGET(m_pFixedContainer) );
|
|
||||||
|
|
||||||
@@ -3639,7 +3640,7 @@ void GtkSalFrame::damaged (const basegfx::B2IBox& rDamageRect)
|
|
||||||
cairo_destroy(cr);
|
|
||||||
}
|
|
||||||
|
|
||||||
- gtk_widget_queue_draw_area(m_pWindow,
|
|
||||||
+ gtk_widget_queue_draw_area(GTK_WIDGET(m_pFixedContainer),
|
|
||||||
rDamageRect.getMinX(),
|
|
||||||
rDamageRect.getMinY(),
|
|
||||||
rDamageRect.getWidth(),
|
|
||||||
@@ -3702,7 +3703,7 @@ void GtkSalFrame::TriggerPaintEvent()
|
|
||||||
SAL_INFO("vcl.gtk3", "force painting" << 0 << "," << 0 << " " << maGeometry.nWidth << "x" << maGeometry.nHeight);
|
|
||||||
SalPaintEvent aPaintEvt(0, 0, maGeometry.nWidth, maGeometry.nHeight, true);
|
|
||||||
CallCallback(SALEVENT_PAINT, &aPaintEvt);
|
|
||||||
- gtk_widget_queue_draw(m_pWindow);
|
|
||||||
+ gtk_widget_queue_draw(GTK_WIDGET(m_pFixedContainer));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.4.3
|
|
||||||
|
|
@ -1,139 +0,0 @@
|
|||||||
From 3059edbc419e79f964a340b5b0ac828a5e866666 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Caolan McNamara <caolanm@redhat.com>
|
|
||||||
Date: Fri, 10 Jul 2015 16:00:22 +0100
|
|
||||||
Subject: [PATCH 1/2] ppc64: simplify this a little
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Change-Id: I8166f65625d389a604750852d6d5a4fee25a88fa
|
|
||||||
Reviewed-on: https://gerrit.libreoffice.org/16935
|
|
||||||
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
||||||
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
||||||
(cherry picked from commit fe14c55f000b9a31d885b411655232e0691e1cd4)
|
|
||||||
Reviewed-on: https://gerrit.libreoffice.org/16945
|
|
||||||
Reviewed-by: David Tardon <dtardon@redhat.com>
|
|
||||||
Tested-by: David Tardon <dtardon@redhat.com>
|
|
||||||
---
|
|
||||||
.../cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx | 61 +++++++++-------------
|
|
||||||
1 file changed, 24 insertions(+), 37 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
|
|
||||||
index 4013076..81d3d5c 100644
|
|
||||||
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
|
|
||||||
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
|
|
||||||
@@ -124,6 +124,8 @@ void MapReturn(long r3, long r4, double dret, typelib_TypeDescriptionReference*
|
|
||||||
if (pReturnType->pType->nSize > 8)
|
|
||||||
pRegisters[1] = r4;
|
|
||||||
}
|
|
||||||
+#else
|
|
||||||
+ (void)r4;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
@@ -185,45 +187,29 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
|
|
||||||
|
|
||||||
// fill registers
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
- "ld 3, 0(%0)\n\t"
|
|
||||||
- "ld 4, 8(%0)\n\t"
|
|
||||||
- "ld 5, 16(%0)\n\t"
|
|
||||||
- "ld 6, 24(%0)\n\t"
|
|
||||||
- "ld 7, 32(%0)\n\t"
|
|
||||||
- "ld 8, 40(%0)\n\t"
|
|
||||||
- "ld 9, 48(%0)\n\t"
|
|
||||||
- "ld 10, 56(%0)\n\t"
|
|
||||||
- "lfd 1, 0(%1)\n\t"
|
|
||||||
- "lfd 2, 8(%1)\n\t"
|
|
||||||
- "lfd 3, 16(%1)\n\t"
|
|
||||||
- "lfd 4, 24(%1)\n\t"
|
|
||||||
- "lfd 5, 32(%1)\n\t"
|
|
||||||
- "lfd 6, 40(%1)\n\t"
|
|
||||||
- "lfd 7, 48(%1)\n\t"
|
|
||||||
- "lfd 8, 56(%1)\n\t"
|
|
||||||
- "lfd 9, 64(%1)\n\t"
|
|
||||||
- "lfd 10, 72(%1)\n\t"
|
|
||||||
- "lfd 11, 80(%1)\n\t"
|
|
||||||
- "lfd 12, 88(%1)\n\t"
|
|
||||||
- "lfd 13, 96(%1)\n\t"
|
|
||||||
- : : "r" (pGPR), "r" (pFPR)
|
|
||||||
- : "r0", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10",
|
|
||||||
- "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7", "fr8", "fr9",
|
|
||||||
- "fr10", "fr11", "fr12", "fr13"
|
|
||||||
+ "lfd 1, 0(%0)\n\t"
|
|
||||||
+ "lfd 2, 8(%0)\n\t"
|
|
||||||
+ "lfd 3, 16(%0)\n\t"
|
|
||||||
+ "lfd 4, 24(%0)\n\t"
|
|
||||||
+ "lfd 5, 32(%0)\n\t"
|
|
||||||
+ "lfd 6, 40(%0)\n\t"
|
|
||||||
+ "lfd 7, 48(%0)\n\t"
|
|
||||||
+ "lfd 8, 56(%0)\n\t"
|
|
||||||
+ "lfd 9, 64(%0)\n\t"
|
|
||||||
+ "lfd 10, 72(%0)\n\t"
|
|
||||||
+ "lfd 11, 80(%0)\n\t"
|
|
||||||
+ "lfd 12, 88(%0)\n\t"
|
|
||||||
+ "lfd 13, 96(%0)\n\t"
|
|
||||||
+ : : "r" (pFPR)
|
|
||||||
+ : "fr1", "fr2", "fr3", "fr4", "fr5", "fr6", "fr7", "fr8", "fr9",
|
|
||||||
+ "fr10", "fr11", "fr12", "fr13"
|
|
||||||
);
|
|
||||||
|
|
||||||
// tell gcc that r3 to r11 are not available to it for doing the TOC and exception munge on the func call
|
|
||||||
register sal_uInt64 r3 asm("r3");
|
|
||||||
register sal_uInt64 r4 asm("r4");
|
|
||||||
- register sal_uInt64 r5 asm("r5");
|
|
||||||
- register sal_uInt64 r6 asm("r6");
|
|
||||||
- register sal_uInt64 r7 asm("r7");
|
|
||||||
- register sal_uInt64 r8 asm("r8");
|
|
||||||
- register sal_uInt64 r9 asm("r9");
|
|
||||||
- register sal_uInt64 r10 asm("r10");
|
|
||||||
- register sal_uInt64 r11 asm("r11");
|
|
||||||
|
|
||||||
- (*pFunc)(r3, r4, r5, r6, r7, r8, r9, r10);
|
|
||||||
+ (*pFunc)(pGPR[0], pGPR[1], pGPR[2], pGPR[3], pGPR[4], pGPR[5], pGPR[6], pGPR[7]);
|
|
||||||
|
|
||||||
// get return value
|
|
||||||
__asm__ __volatile__ (
|
|
||||||
@@ -375,7 +361,6 @@ static void cpp_call(
|
|
||||||
|
|
||||||
if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr ))
|
|
||||||
{
|
|
||||||
-// uno_copyAndConvertData( pCppArgs[nPos] = alloca( 8 ), pUnoArgs[nPos], pParamTypeDescr,
|
|
||||||
uno_copyAndConvertData( pCppArgs[nPos] = pStack, pUnoArgs[nPos], pParamTypeDescr,
|
|
||||||
pThis->getBridge()->getUno2Cpp() );
|
|
||||||
switch (pParamTypeDescr->eTypeClass)
|
|
||||||
@@ -383,7 +368,7 @@ static void cpp_call(
|
|
||||||
case typelib_TypeClass_HYPER:
|
|
||||||
case typelib_TypeClass_UNSIGNED_HYPER:
|
|
||||||
#if OSL_DEBUG_LEVEL > 2
|
|
||||||
- fprintf(stderr, "hyper is %lx\n", pCppArgs[nPos]);
|
|
||||||
+ fprintf(stderr, "hyper is %lx\n", pCppArgs[nPos]);
|
|
||||||
#endif
|
|
||||||
INSERT_INT64( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow );
|
|
||||||
break;
|
|
||||||
@@ -391,7 +376,7 @@ static void cpp_call(
|
|
||||||
case typelib_TypeClass_UNSIGNED_LONG:
|
|
||||||
case typelib_TypeClass_ENUM:
|
|
||||||
#if OSL_DEBUG_LEVEL > 2
|
|
||||||
- fprintf(stderr, "long is %x\n", pCppArgs[nPos]);
|
|
||||||
+ fprintf(stderr, "long is %x\n", pCppArgs[nPos]);
|
|
||||||
#endif
|
|
||||||
INSERT_INT32( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow );
|
|
||||||
break;
|
|
||||||
@@ -406,10 +391,12 @@ static void cpp_call(
|
|
||||||
break;
|
|
||||||
case typelib_TypeClass_FLOAT:
|
|
||||||
INSERT_FLOAT( pCppArgs[nPos], nFPR, pFPR, pStack, bOverflow );
|
|
||||||
- break;
|
|
||||||
+ break;
|
|
||||||
case typelib_TypeClass_DOUBLE:
|
|
||||||
INSERT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack, bOverflow );
|
|
||||||
break;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// no longer needed
|
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From d9b2105e14b7f84c24ced4faea1795e32d8e21d1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
||||||
Date: Fri, 17 Jul 2015 13:51:16 +0100
|
|
||||||
Subject: [PATCH] wayland: actually show something
|
|
||||||
|
|
||||||
Change-Id: Icd081c38de1374c6bfd6fb04d7765e07ff5d1aff
|
|
||||||
---
|
|
||||||
vcl/unx/gtk/app/gtkdata.cxx | 2 +-
|
|
||||||
vcl/unx/gtk/window/gtksalframe.cxx | 11 ++++++++++-
|
|
||||||
2 files changed, 11 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
index 3bedf78..bdb360a 100644
|
|
||||||
--- a/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
|
|
||||||
@@ -105,6 +105,12 @@
|
|
||||||
#define IS_WIDGET_MAPPED GTK_WIDGET_MAPPED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if !GTK_CHECK_VERSION(3,10,0)
|
|
||||||
+#define GDK_WINDOWING_X11
|
|
||||||
+#define GDK_IS_X11_DISPLAY(foo) (true)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+
|
|
||||||
using namespace com::sun::star;
|
|
||||||
|
|
||||||
int GtkSalFrame::m_nFloats = 0;
|
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
@ -1,165 +0,0 @@
|
|||||||
From f31326f623b0be2392b3846f710df75ea8760446 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Caolan McNamara <caolanm@redhat.com>
|
|
||||||
Date: Fri, 10 Jul 2015 16:36:41 +0100
|
|
||||||
Subject: [PATCH 2/2] ppc64: using a fp register also consumes a gp register
|
|
||||||
slot
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Change-Id: Idf6f40081f4598c0fa9d1e10bdc208eae49e4cd1
|
|
||||||
Reviewed-on: https://gerrit.libreoffice.org/16936
|
|
||||||
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
||||||
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
||||||
(cherry picked from commit e8ac3b5bd973054c6fd74db017bb448721e2c3e2)
|
|
||||||
Reviewed-on: https://gerrit.libreoffice.org/16946
|
|
||||||
Reviewed-by: David Tardon <dtardon@redhat.com>
|
|
||||||
Tested-by: David Tardon <dtardon@redhat.com>
|
|
||||||
---
|
|
||||||
bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx | 6 ++++++
|
|
||||||
bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx | 16 ++++++++++------
|
|
||||||
testtools/com/sun/star/comp/bridge/TestComponent.java | 4 ++++
|
|
||||||
testtools/source/bridgetest/bridgetest.cxx | 4 ++++
|
|
||||||
testtools/source/bridgetest/cli/cli_cs_testobj.cs | 5 +++++
|
|
||||||
testtools/source/bridgetest/cppobj.cxx | 2 ++
|
|
||||||
testtools/source/bridgetest/idl/bridgetest.idl | 6 ++++++
|
|
||||||
7 files changed, 37 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
|
|
||||||
index 6b58246..6ac003b 100644
|
|
||||||
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
|
|
||||||
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
|
|
||||||
@@ -133,6 +133,12 @@ static typelib_TypeClass cpp2uno_call(
|
|
||||||
}
|
|
||||||
pCppArgs[nPos] = pUnoArgs[nPos] = fpreg++;
|
|
||||||
nf++;
|
|
||||||
+
|
|
||||||
+ if (ng < ppc64::MAX_GPR_REGS)
|
|
||||||
+ {
|
|
||||||
+ ng++;
|
|
||||||
+ gpreg++;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
|
|
||||||
index 81d3d5c..28dfaf8 100644
|
|
||||||
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
|
|
||||||
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/uno2cpp.cxx
|
|
||||||
@@ -229,16 +229,20 @@ static void callVirtualMethod(void * pThis, sal_uInt32 nVtableIndex,
|
|
||||||
|
|
||||||
// The value in %xmm register is already prepared to be retrieved as a float,
|
|
||||||
// thus we treat float and double the same
|
|
||||||
-#define INSERT_FLOAT( pSV, nr, pFPR, pDS, bOverflow ) \
|
|
||||||
- if ( nr < ppc64::MAX_SSE_REGS ) \
|
|
||||||
+#define INSERT_FLOAT( pSV, nr, pFPR, nGPR, pDS, bOverflow ) \
|
|
||||||
+ if ( nGPR < ppc64::MAX_GPR_REGS ) \
|
|
||||||
+ ++nGPR; \
|
|
||||||
+ if ( nr < ppc64::MAX_SSE_REGS ) \
|
|
||||||
pFPR[nr++] = *reinterpret_cast<float *>( pSV ); \
|
|
||||||
else \
|
|
||||||
bOverflow = true; \
|
|
||||||
if (bOverflow) \
|
|
||||||
*pDS++ = *reinterpret_cast<sal_uInt64 *>( pSV ); // verbatim!
|
|
||||||
|
|
||||||
-#define INSERT_DOUBLE( pSV, nr, pFPR, pDS, bOverflow ) \
|
|
||||||
- if ( nr < ppc64::MAX_SSE_REGS ) \
|
|
||||||
+#define INSERT_DOUBLE( pSV, nr, pFPR, nGPR, pDS, bOverflow ) \
|
|
||||||
+ if ( nGPR < ppc64::MAX_GPR_REGS ) \
|
|
||||||
+ ++nGPR; \
|
|
||||||
+ if ( nr < ppc64::MAX_SSE_REGS ) \
|
|
||||||
pFPR[nr++] = *reinterpret_cast<double *>( pSV ); \
|
|
||||||
else \
|
|
||||||
bOverflow = true; \
|
|
||||||
@@ -390,10 +394,10 @@ static void cpp_call(
|
|
||||||
INSERT_INT8( pCppArgs[nPos], nGPR, pGPR, pStack, bOverflow );
|
|
||||||
break;
|
|
||||||
case typelib_TypeClass_FLOAT:
|
|
||||||
- INSERT_FLOAT( pCppArgs[nPos], nFPR, pFPR, pStack, bOverflow );
|
|
||||||
+ INSERT_FLOAT( pCppArgs[nPos], nFPR, pFPR, nGPR, pStack, bOverflow );
|
|
||||||
break;
|
|
||||||
case typelib_TypeClass_DOUBLE:
|
|
||||||
- INSERT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, pStack, bOverflow );
|
|
||||||
+ INSERT_DOUBLE( pCppArgs[nPos], nFPR, pFPR, nGPR, pStack, bOverflow );
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
diff --git a/testtools/com/sun/star/comp/bridge/TestComponent.java b/testtools/com/sun/star/comp/bridge/TestComponent.java
|
|
||||||
index bf1524d..8e07d1a 100644
|
|
||||||
--- a/testtools/com/sun/star/comp/bridge/TestComponent.java
|
|
||||||
+++ b/testtools/com/sun/star/comp/bridge/TestComponent.java
|
|
||||||
@@ -498,6 +498,10 @@ public class TestComponent {
|
|
||||||
return i2;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public int testPPC64Alignment( double d1, double d2, double d3, int i1 ) throws com.sun.star.uno.RuntimeException {
|
|
||||||
+ return i1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
public double testTenDoubles( double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9, double d10 ) {
|
|
||||||
return d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10;
|
|
||||||
}
|
|
||||||
diff --git a/testtools/source/bridgetest/bridgetest.cxx b/testtools/source/bridgetest/bridgetest.cxx
|
|
||||||
index ea37b9a..427513f 100644
|
|
||||||
--- a/testtools/source/bridgetest/bridgetest.cxx
|
|
||||||
+++ b/testtools/source/bridgetest/bridgetest.cxx
|
|
||||||
@@ -529,6 +529,10 @@ static bool performTest(
|
|
||||||
bRet &= check(i2 == 0xBEAF, "ppc-style alignment test");
|
|
||||||
}
|
|
||||||
{
|
|
||||||
+ sal_Int32 i1 = xLBT->testPPC64Alignment(1.0, 2.0, 3.0, 0xBEAF);
|
|
||||||
+ bRet &= check(i1 == 0xBEAF, "ppc64-style alignment test");
|
|
||||||
+ }
|
|
||||||
+ {
|
|
||||||
double d1 = xLBT->testTenDoubles(0.1, 0.2, 0.3, 0.4, 0.5,
|
|
||||||
0.6, 0.7, 0.8, 0.9, 1.0);
|
|
||||||
bRet &= check(d1 == 5.5, "armhf doubles test");
|
|
||||||
diff --git a/testtools/source/bridgetest/cli/cli_cs_testobj.cs b/testtools/source/bridgetest/cli/cli_cs_testobj.cs
|
|
||||||
index 9d0ac7a..8f396c9 100644
|
|
||||||
--- a/testtools/source/bridgetest/cli/cli_cs_testobj.cs
|
|
||||||
+++ b/testtools/source/bridgetest/cli/cli_cs_testobj.cs
|
|
||||||
@@ -255,6 +255,11 @@ public class BridgeTestObject : WeakBase, XRecursiveCall, XBridgeTest2
|
|
||||||
return i2;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public int testPPC64Alignment( double d1, double d2, double d3, int i1 )
|
|
||||||
+ {
|
|
||||||
+ return i1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
public double testTenDoubles( double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9, double d10 )
|
|
||||||
{
|
|
||||||
return d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10;
|
|
||||||
diff --git a/testtools/source/bridgetest/cppobj.cxx b/testtools/source/bridgetest/cppobj.cxx
|
|
||||||
index a468d90..30f85f0 100644
|
|
||||||
--- a/testtools/source/bridgetest/cppobj.cxx
|
|
||||||
+++ b/testtools/source/bridgetest/cppobj.cxx
|
|
||||||
@@ -220,6 +220,8 @@ public:
|
|
||||||
{ return rStruct; }
|
|
||||||
virtual sal_Int32 SAL_CALL testPPCAlignment( sal_Int64, sal_Int64, sal_Int32, sal_Int64, sal_Int32 i2 ) throw(com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE
|
|
||||||
{ return i2; }
|
|
||||||
+ virtual sal_Int32 SAL_CALL testPPC64Alignment( double , double , double , sal_Int32 i1 ) throw(com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE
|
|
||||||
+ { return i1; }
|
|
||||||
virtual double SAL_CALL testTenDoubles( double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8, double d9, double d10 ) throw(com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE
|
|
||||||
{ return d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10; }
|
|
||||||
virtual sal_Bool SAL_CALL getBool() throw(com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE
|
|
||||||
diff --git a/testtools/source/bridgetest/idl/bridgetest.idl b/testtools/source/bridgetest/idl/bridgetest.idl
|
|
||||||
index a11ba28..22612b8 100644
|
|
||||||
--- a/testtools/source/bridgetest/idl/bridgetest.idl
|
|
||||||
+++ b/testtools/source/bridgetest/idl/bridgetest.idl
|
|
||||||
@@ -307,6 +307,12 @@ interface XBridgeTestBase : com::sun::star::uno::XInterface
|
|
||||||
long testPPCAlignment( [in] hyper l1, [in] hyper l2, [in] long i1, [in] hyper l3, [in] long i2 );
|
|
||||||
|
|
||||||
/**
|
|
||||||
+ * PPC64 Alignment test
|
|
||||||
+ */
|
|
||||||
+ long testPPC64Alignment( [in] double d1, [in] double d2, [in] double d3, [in] long i1 );
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
* VFP ABI (armhf) doubles test
|
|
||||||
*/
|
|
||||||
double testTenDoubles( [in] double d1, [in] double d2, [in] double d3, [in] double d4, [in] double d5, [in] double d6, [in] double d7, [in] double d8, [in] double d9, [in] double d10 );
|
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
Loading…
Reference in new issue