first shot at packaging 4.0

f41
David Tardon 12 years ago
parent 3500bf7f0d
commit a2f244f982

3
.gitignore vendored

@ -30,3 +30,6 @@
/libreoffice-core-3.6.4.1.tar.xz /libreoffice-core-3.6.4.1.tar.xz
/libreoffice-help-3.6.4.1.tar.xz /libreoffice-help-3.6.4.1.tar.xz
/libreoffice-translations-3.6.4.1.tar.xz /libreoffice-translations-3.6.4.1.tar.xz
/libreoffice-4.0.0.0.alpha1.tar.xz
/libreoffice-help-4.0.0.0.alpha1.tar.xz
/libreoffice-translations-4.0.0.0.alpha1.tar.xz

@ -1,257 +0,0 @@
From 2efa35a812a6f1e35e4959a357f50feff7e598f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 6 Nov 2012 23:21:06 +0000
Subject: [PATCH] Resolves: fdo#56198 collect scrollbar click preference
settings
for gtk and merge with aqua equivalent so as to alternate "jump to here"
behavior for primary button vs primary means scroll by single page. Secondary
button takes the alternative behaviour
Change-Id: I0a96f3131f41ec87052da39cbe96bfd895ca53f6
---
vcl/aqua/source/window/salframe.cxx | 6 +++---
vcl/inc/svdata.hxx | 1 -
vcl/inc/vcl/settings.hxx | 17 ++++++++++++-----
vcl/source/app/settings.cxx | 15 +++++++++------
vcl/source/control/scrbar.cxx | 24 ++++++++++++++++--------
vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 10 +++++++---
vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 10 +++++++---
7 files changed, 54 insertions(+), 29 deletions(-)
diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx
index 924210d..cf7c048 100644
--- a/vcl/aqua/source/window/salframe.cxx
+++ b/vcl/aqua/source/window/salframe.cxx
@@ -1146,7 +1146,7 @@ rtl::OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode )
// -----------------------------------------------------------------------
-static void getAppleScrollBarVariant(void)
+static void getAppleScrollBarVariant(StyleSettings &rSettings)
{
bool bIsScrollbarDoubleMax = true; // default is DoubleMax
@@ -1183,7 +1183,7 @@ static void getAppleScrollBarVariant(void)
if( jumpStr )
{
if( CFGetTypeID( jumpStr ) == CFBooleanGetTypeID() )
- ImplGetSVData()->maNWFData.mbScrollbarJumpPage = (jumpStr == kCFBooleanTrue);
+ rSettings.SetPrimaryButtonWarpsSlider(jumpStr == kCFBooleanTrue);
CFRelease( jumpStr );
}
CFRelease( jumpScroll );
@@ -1324,7 +1324,7 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings )
// no mnemonics on aqua
aStyleSettings.SetOptions( aStyleSettings.GetOptions() | STYLE_OPTION_NOMNEMONICS );
- getAppleScrollBarVariant();
+ getAppleScrollBarVariant(aStyleSettings);
// set scrollbar size
aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidth]) );
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index af547e9..974a67f 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -294,7 +294,6 @@ struct ImplSVNWFData
bool mbCheckBoxNeedsErase:1; // set true for platforms that should draw the
// window background before drawing the native
// checkbox
- bool mbScrollbarJumpPage:1; // true for "jump to here" behavior
bool mbCanDrawWidgetAnySize:1; // set to true currently on gtk
};
diff --git a/vcl/inc/vcl/settings.hxx b/vcl/inc/vcl/settings.hxx
index 9a0a856..1052b49 100644
--- a/vcl/inc/vcl/settings.hxx
+++ b/vcl/inc/vcl/settings.hxx
@@ -323,7 +323,10 @@
sal_uLong mnPreferredSymbolsStyle;
sal_uInt16 mnSkipDisabledInMenus;
sal_Bool mbHideDisabledMenuItems;
- sal_Bool mnAcceleratorsInContextMenus;
+ sal_Bool mbAcceleratorsInContextMenus;
+ //mbPrimaryButtonWarpsSlider == true for "jump to here" behavior for primary button, otherwise
+ //primary means scroll by single page. Secondary button takes the alternative behaviour
+ sal_Bool mbPrimaryButtonWarpsSlider;
Wallpaper maWorkspaceGradient;
const void* mpFontOptions;
};
@@ -628,10 +631,14 @@
{ CopyData(); mpData->mbHideDisabledMenuItems = bHideDisabledMenuItems; }
sal_Bool GetHideDisabledMenuItems() const
{ return mpData->mbHideDisabledMenuItems; }
- void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus )
- { CopyData(); mpData->mnAcceleratorsInContextMenus = bAcceleratorsInContextMenus; }
- sal_Bool GetAcceleratorsInContextMenus() const
- { return mpData->mnAcceleratorsInContextMenus; }
+ void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus )
+ { CopyData(); mpData->mbAcceleratorsInContextMenus = bAcceleratorsInContextMenus; }
+ sal_Bool GetAcceleratorsInContextMenus() const
+ { return mpData->mbAcceleratorsInContextMenus; }
+ void SetPrimaryButtonWarpsSlider( sal_Bool bPrimaryButtonWarpsSlider )
+ { CopyData(); mpData->mbPrimaryButtonWarpsSlider = bPrimaryButtonWarpsSlider; }
+ sal_Bool GetPrimaryButtonWarpsSlider() const
+ { return mpData->mbPrimaryButtonWarpsSlider; }
void SetCairoFontOptions( const void *pOptions )
{ CopyData(); mpData->mpFontOptions = pOptions; }
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 273e118..a2acdad 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -337,11 +337,12 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
mnUseImagesInMenus = rData.mnUseImagesInMenus;
mbPreferredUseImagesInMenus = rData.mbPreferredUseImagesInMenus;
mnSkipDisabledInMenus = rData.mnSkipDisabledInMenus;
- mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems;
- mnAcceleratorsInContextMenus = rData.mnAcceleratorsInContextMenus;
+ mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems;
+ mbAcceleratorsInContextMenus = rData.mbAcceleratorsInContextMenus;
+ mbPrimaryButtonWarpsSlider = rData.mbPrimaryButtonWarpsSlider;
mnToolbarIconSize = rData.mnToolbarIconSize;
mnSymbolsStyle = rData.mnSymbolsStyle;
- mnPreferredSymbolsStyle = rData.mnPreferredSymbolsStyle;
+ mnPreferredSymbolsStyle = rData.mnPreferredSymbolsStyle;
mpFontOptions = rData.mpFontOptions;
}
@@ -425,10 +426,11 @@ void ImplStyleData::SetStandardStyles()
mnUseSystemUIFonts = 1;
mnUseFlatBorders = 0;
mnUseFlatMenues = 0;
- mbPreferredUseImagesInMenus = sal_True;
+ mbPreferredUseImagesInMenus = sal_True;
mnSkipDisabledInMenus = (sal_uInt16)sal_False;
mbHideDisabledMenuItems = sal_False;
- mnAcceleratorsInContextMenus = sal_True;
+ mbAcceleratorsInContextMenus = sal_True;
+ mbPrimaryButtonWarpsSlider = sal_False;
Gradient aGrad( GradientStyle_LINEAR, DEFAULT_WORKSPACE_GRADIENT_START_COLOR, DEFAULT_WORKSPACE_GRADIENT_END_COLOR );
maWorkspaceGradient = Wallpaper( aGrad );
@@ -852,7 +854,8 @@ sal_Bool StyleSettings::operator ==( const StyleSettings& rSet ) const
(mpData->mbPreferredUseImagesInMenus == rSet.mpData->mbPreferredUseImagesInMenus) &&
(mpData->mnSkipDisabledInMenus == rSet.mpData->mnSkipDisabledInMenus) &&
(mpData->mbHideDisabledMenuItems == rSet.mpData->mbHideDisabledMenuItems) &&
- (mpData->mnAcceleratorsInContextMenus == rSet.mpData->mnAcceleratorsInContextMenus) &&
+ (mpData->mbAcceleratorsInContextMenus == rSet.mpData->mbAcceleratorsInContextMenus)&&
+ (mpData->mbPrimaryButtonWarpsSlider == rSet.mpData->mbPrimaryButtonWarpsSlider) &&
(mpData->maFontColor == rSet.mpData->maFontColor ))
return sal_True;
else
diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx
index dad66f6..9e90362 100644
--- a/vcl/source/control/scrbar.cxx
+++ b/vcl/source/control/scrbar.cxx
@@ -948,7 +948,12 @@
void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt )
{
- if ( rMEvt.IsLeft() || rMEvt.IsMiddle() )
+ bool bPrimaryWarps = GetSettings().GetStyleSettings().GetPrimaryButtonWarpsSlider();
+ bool bWarp = bPrimaryWarps ? rMEvt.IsLeft() : rMEvt.IsMiddle();
+ bool bPrimaryWarping = bWarp && rMEvt.IsLeft();
+ bool bPage = bPrimaryWarps ? rMEvt.IsRight() : rMEvt.IsLeft();
+
+ if (rMEvt.IsLeft() || rMEvt.IsMiddle() || rMEvt.IsRight())
{
const Point& rMousePos = rMEvt.GetPosPixel();
sal_uInt16 nTrackFlags = 0;
@@ -964,7 +969,7 @@
bIsInside:
maBtn1Rect.IsInside( rMousePos ) )
{
- if ( !(mnStateFlags & SCRBAR_STATE_BTN1_DISABLE) )
+ if (rMEvt.IsLeft() && !(mnStateFlags & SCRBAR_STATE_BTN1_DISABLE) )
{
nTrackFlags = STARTTRACK_BUTTONREPEAT;
meScrollType = SCROLL_LINEUP;
@@ -978,7 +983,7 @@
bIsInside:
maBtn2Rect.IsInside( rMousePos ) )
{
- if ( !(mnStateFlags & SCRBAR_STATE_BTN2_DISABLE) )
+ if (rMEvt.IsLeft() && !(mnStateFlags & SCRBAR_STATE_BTN2_DISABLE) )
{
nTrackFlags = STARTTRACK_BUTTONREPEAT;
meScrollType = SCROLL_LINEDOWN;
@@ -992,7 +997,10 @@
bool bThumbHit = HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_THUMB_HORZ : PART_THUMB_VERT,
maThumbRect, rMousePos, bIsInside )
? bIsInside : maThumbRect.IsInside( rMousePos );
- bool bDragHandling = rMEvt.IsMiddle() || bThumbHit || ImplGetSVData()->maNWFData.mbScrollbarJumpPage;
+
+ bool bThumbAction = bWarp || bPage;
+
+ bool bDragHandling = bWarp || (bThumbHit && bThumbAction);
if( bDragHandling )
{
if( mpData )
@@ -1009,7 +1017,7 @@
mnDragDraw = SCRBAR_DRAW_THUMB;
// calculate mouse offset
- if( rMEvt.IsMiddle() || (ImplGetSVData()->maNWFData.mbScrollbarJumpPage && !bThumbHit) )
+ if (bWarp && (!bThumbHit || !bPrimaryWarping))
{
bDragToMouse = sal_True;
if ( GetStyle() & WB_HORZ )
@@ -1031,9 +1039,9 @@
else
Sound::Beep( SOUND_DISABLE, this );
}
- else if( HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA,
+ else if(bPage && (HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA,
aControlRegion, rMousePos, bIsInside )?
- bIsInside : sal_True )
+ bIsInside : sal_True) )
{
nTrackFlags = STARTTRACK_BUTTONREPEAT;
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
index 65df181..1451476 100644
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
@@ -3987,9 +3987,13 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aMouseSettings.SetMenuDelay( iMenuPopupDelay );
rSettings.SetMouseSettings( aMouseSettings );
- gboolean showmenuicons = true;
- g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL );
- aStyleSet.SetPreferredUseImagesInMenus( showmenuicons );
+ gboolean showmenuicons = true, primarybuttonwarps = false;
+ g_object_get( pSettings,
+ "gtk-menu-images", &showmenuicons,
+ "gtk-primary-button-warps-slider", &primarybuttonwarps,
+ (char *)NULL );
+ aStyleSet.SetPreferredUseImagesInMenus(showmenuicons);
+ aStyleSet.SetPrimaryButtonWarpsSlider(primarybuttonwarps);
// set scrollbar settings
gint slider_width = 14;
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 0774699f..1037d9d 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -1376,9 +1376,13 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
aMouseSettings.SetMenuDelay( iMenuPopupDelay );
rSettings.SetMouseSettings( aMouseSettings );
- gboolean showmenuicons = true;
- g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL );
- aStyleSet.SetPreferredUseImagesInMenus( showmenuicons );
+ gboolean showmenuicons = true, primarybuttonwarps = false;
+ g_object_get( pSettings,
+ "gtk-menu-images", &showmenuicons,
+ "gtk-primary-button-warps-slider", &primarybuttonwarps,
+ (char *)NULL );
+ aStyleSet.SetPreferredUseImagesInMenus(showmenuicons);
+ aStyleSet.SetPrimaryButtonWarpsSlider(primarybuttonwarps);
// set scrollbar settings
gint slider_width = 14;
--
1.7.11.7

@ -1,970 +0,0 @@
diff -ru libreoffice-3.5.5.3.orig/cui/source/options/optlingu.cxx libreoffice-3.5.5.3/cui/source/options/optlingu.cxx
--- libreoffice-3.5.5.3.orig/cui/source/options/optlingu.cxx 2012-07-13 12:37:15.032259144 +0100
+++ libreoffice-3.5.5.3/cui/source/options/optlingu.cxx 2012-07-16 08:49:26.294209540 +0100
@@ -1150,12 +1150,6 @@
aLinguDicsEditPB.SetAccessibleName(sAccessibleNameDicsEdit);
aLinguOptionsEditPB.SetAccessibleName(sAccessibleNameOptionEdit);
- // force recalculation of hash value used for checking the need of updating
- // because new dictionaries might be installed / downloaded.
- //! Thus it needs to be called now since it may infuence the supported languages
- //! to be reported AND the found user-dictionaries(!) as well.
- SvxLinguConfigUpdate::UpdateAll( sal_True );
-
xProp = uno::Reference< XPropertySet >( SvxGetLinguPropertySet(), UNO_QUERY );
xDicList = uno::Reference< XDictionaryList >( SvxGetDictionaryList(), UNO_QUERY );
if (xDicList.is())
diff -ru libreoffice-3.5.5.3.orig/editeng/inc/editeng/unolingu.hxx libreoffice-3.5.5.3/editeng/inc/editeng/unolingu.hxx
--- libreoffice-3.5.5.3.orig/editeng/inc/editeng/unolingu.hxx 2012-07-13 12:37:16.109269892 +0100
+++ libreoffice-3.5.5.3/editeng/inc/editeng/unolingu.hxx 2012-07-16 08:49:26.294209540 +0100
@@ -46,29 +46,6 @@
class Window;
///////////////////////////////////////////////////////////////////////////
-// SvxLinguConfigUpdate
-// class to update configuration items when (before!) the linguistic is used.
-//
-// This class is called by all the dummy implementations to update all of the
-// configuration (list of used/available services) when the linguistic is
-// accessed for the first time.
-
-class SvxLinguConfigUpdate
-{
- static sal_Int32 nCurrentDataFilesChangedCheckValue;
- static sal_Int16 nNeedUpdating; // n == -1 => needs to be checked
- // n == 0 => already updated, nothing to be done
- // n == 1 => needs to be updated
-
- static sal_Int32 CalcDataFilesChangedCheckValue();
-
-public:
-
- EDITENG_DLLPUBLIC static void UpdateAll( sal_Bool bForceCheck = sal_False );
- static sal_Bool IsNeedUpdateAll( sal_Bool bForceCheck = sal_False );
-};
-
-///////////////////////////////////////////////////////////////////////////
class EDITENG_DLLPUBLIC LinguMgr
{
diff -ru libreoffice-3.5.5.3.orig/editeng/source/misc/unolingu.cxx libreoffice-3.5.5.3/editeng/source/misc/unolingu.cxx
--- libreoffice-3.5.5.3.orig/editeng/source/misc/unolingu.cxx 2012-07-13 12:37:15.900267806 +0100
+++ libreoffice-3.5.5.3/editeng/source/misc/unolingu.cxx 2012-07-16 08:52:53.919596778 +0100
@@ -90,365 +90,6 @@
return xRes;
}
-sal_Bool lcl_FindEntry( const OUString &rEntry, const Sequence< OUString > &rCfgSvcs )
-{
- sal_Int32 nRes = -1;
- sal_Int32 nEntries = rCfgSvcs.getLength();
- const OUString *pEntry = rCfgSvcs.getConstArray();
- for (sal_Int32 i = 0; i < nEntries && nRes == -1; ++i)
- {
- if (rEntry == pEntry[i])
- nRes = i;
- }
- return nRes != -1;
-}
-
-
-Sequence< OUString > lcl_RemoveMissingEntries(
- const Sequence< OUString > &rCfgSvcs,
- const Sequence< OUString > &rAvailSvcs )
-{
- Sequence< OUString > aRes( rCfgSvcs.getLength() );
- OUString *pRes = aRes.getArray();
- sal_Int32 nCnt = 0;
-
- sal_Int32 nEntries = rCfgSvcs.getLength();
- const OUString *pEntry = rCfgSvcs.getConstArray();
- for (sal_Int32 i = 0; i < nEntries; ++i)
- {
- if (!pEntry[i].isEmpty() && lcl_FindEntry( pEntry[i], rAvailSvcs ))
- pRes[ nCnt++ ] = pEntry[i];
- }
-
- aRes.realloc( nCnt );
- return aRes;
-}
-
-
-Sequence< OUString > lcl_GetLastFoundSvcs(
- SvtLinguConfig &rCfg,
- const OUString &rLastFoundList ,
- const Locale &rAvailLocale )
-{
- Sequence< OUString > aRes;
-
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
- SvxLocaleToLanguage( rAvailLocale ) ) );
-
- Sequence< OUString > aNodeNames( rCfg.GetNodeNames(rLastFoundList) );
- sal_Bool bFound = lcl_FindEntry( aCfgLocaleStr, aNodeNames);
-
- if (bFound)
- {
- Sequence< OUString > aNames(1);
- OUString &rNodeName = aNames.getArray()[0];
- rNodeName = rLastFoundList;
- rNodeName += OUString::valueOf( (sal_Unicode)'/' );
- rNodeName += aCfgLocaleStr;
- Sequence< Any > aValues( rCfg.GetProperties( aNames ) );
- if (aValues.getLength())
- {
- OSL_ENSURE( aValues.getLength() == 1, "unexpected length of sequence" );
- Sequence< OUString > aSvcImplNames;
- if (aValues.getConstArray()[0] >>= aSvcImplNames)
- aRes = aSvcImplNames;
- else
- {
- OSL_FAIL( "type mismatch" );
- }
- }
- }
-
- return aRes;
-}
-
-
-Sequence< OUString > lcl_GetNewEntries(
- const Sequence< OUString > &rLastFoundSvcs,
- const Sequence< OUString > &rAvailSvcs )
-{
- sal_Int32 nLen = rAvailSvcs.getLength();
- Sequence< OUString > aRes( nLen );
- OUString *pRes = aRes.getArray();
- sal_Int32 nCnt = 0;
-
- const OUString *pEntry = rAvailSvcs.getConstArray();
- for (sal_Int32 i = 0; i < nLen; ++i)
- {
- if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], rLastFoundSvcs ))
- pRes[ nCnt++ ] = pEntry[i];
- }
-
- aRes.realloc( nCnt );
- return aRes;
-}
-
-
-Sequence< OUString > lcl_MergeSeq(
- const Sequence< OUString > &rCfgSvcs,
- const Sequence< OUString > &rNewSvcs )
-{
- Sequence< OUString > aRes( rCfgSvcs.getLength() + rNewSvcs.getLength() );
- OUString *pRes = aRes.getArray();
- sal_Int32 nCnt = 0;
-
- for (sal_Int32 k = 0; k < 2; ++k)
- {
- // add previously configuerd service first and append
- // new found services at the end
- const Sequence< OUString > &rSeq = k == 0 ? rCfgSvcs : rNewSvcs;
-
- sal_Int32 nLen = rSeq.getLength();
- const OUString *pEntry = rSeq.getConstArray();
- for (sal_Int32 i = 0; i < nLen; ++i)
- {
- if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], aRes ))
- pRes[ nCnt++ ] = pEntry[i];
- }
- }
-
- aRes.realloc( nCnt );
- return aRes;
-}
-
-sal_Int16 SvxLinguConfigUpdate::nNeedUpdating = -1;
-sal_Int32 SvxLinguConfigUpdate::nCurrentDataFilesChangedCheckValue = -1;
-
-void SvxLinguConfigUpdate::UpdateAll( sal_Bool bForceCheck )
-{
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll" );
-
- if (IsNeedUpdateAll( bForceCheck ))
- {
- typedef OUString OUstring_t;
- typedef Sequence< OUString > Sequence_OUString_t;
- typedef std::map< OUstring_t, Sequence_OUString_t > list_entry_map_t;
-
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll - updating..." );
-
- OSL_ENSURE( nNeedUpdating == 1, "SvxLinguConfigUpdate::UpdateAll already updated!" );
-
- uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
- OSL_ENSURE( xLngSvcMgr.is(), "service manager missing");
- if (!xLngSvcMgr.is())
- return;
-
- SvtLinguConfig aCfg;
-
- const int nNumServices = 4;
- const sal_Char * apServices[nNumServices] = { SN_SPELLCHECKER, SN_GRAMMARCHECKER, SN_HYPHENATOR, SN_THESAURUS };
- const sal_Char * apCurLists[nNumServices] = { "ServiceManager/SpellCheckerList", "ServiceManager/GrammarCheckerList", "ServiceManager/HyphenatorList", "ServiceManager/ThesaurusList" };
- const sal_Char * apLastFoundLists[nNumServices] = { "ServiceManager/LastFoundSpellCheckers", "ServiceManager/LastFoundGrammarCheckers", "ServiceManager/LastFoundHyphenators", "ServiceManager/LastFoundThesauri" };
-
- // usage of indices as above: 0 = spell checker, 1 = grammar checker, 2 = hyphenator, 3 = thesaurus
- std::vector< list_entry_map_t > aLastFoundSvcs(nNumServices);
- std::vector< list_entry_map_t > aCurSvcs(nNumServices);
-
- for (int k = 0; k < nNumServices; ++k)
- {
- OUString aService( ::rtl::OUString::createFromAscii( apServices[k] ) );
- OUString aActiveList( ::rtl::OUString::createFromAscii( apCurLists[k] ) );
- OUString aLastFoundList( ::rtl::OUString::createFromAscii( apLastFoundLists[k] ) );
- sal_Int32 i;
-
- //
- // remove configured but not available language/services entries
- //
- Sequence< OUString > aNodeNames( aCfg.GetNodeNames( aActiveList ) ); // list of configured locales
- sal_Int32 nNodeNames = aNodeNames.getLength();
- const OUString *pNodeName = aNodeNames.getConstArray();
- for (i = 0; i < nNodeNames; ++i)
- {
- Locale aLocale( SvxCreateLocale( MsLangId::convertIsoStringToLanguage(pNodeName[i]) ) );
- Sequence< OUString > aCfgSvcs(
- xLngSvcMgr->getConfiguredServices( aService, aLocale ));
- Sequence< OUString > aAvailSvcs(
- xLngSvcMgr->getAvailableServices( aService, aLocale ));
-#if OSL_DEBUG_LEVEL > 1
- const OUString * pCfgSvcs = aCfgSvcs.getConstArray();
- const OUString * pAvailSvcs = aAvailSvcs.getConstArray();
- (void) pCfgSvcs;
- (void) pAvailSvcs;
-#endif
- aCfgSvcs = lcl_RemoveMissingEntries( aCfgSvcs, aAvailSvcs );
-
- aCurSvcs[k][ pNodeName[i] ] = aCfgSvcs;
- }
-
- //
- // add new available language/servcice entries
- //
- uno::Reference< XAvailableLocales > xAvail( xLngSvcMgr, UNO_QUERY );
- Sequence< Locale > aAvailLocales( xAvail->getAvailableLocales(aService) );
- sal_Int32 nAvailLocales = aAvailLocales.getLength();
- const Locale *pAvailLocale = aAvailLocales.getConstArray();
- for (i = 0; i < nAvailLocales; ++i)
- {
- Sequence< OUString > aAvailSvcs(
- xLngSvcMgr->getAvailableServices( aService, pAvailLocale[i] ));
- Sequence< OUString > aLastSvcs(
- lcl_GetLastFoundSvcs( aCfg, aLastFoundList , pAvailLocale[i] ));
- Sequence< OUString > aNewSvcs =
- lcl_GetNewEntries( aLastSvcs, aAvailSvcs );
-#if OSL_DEBUG_LEVEL > 1
- const OUString * pAvailSvcs = aAvailSvcs.getConstArray();
- const OUString * pLastSvcs = aLastSvcs.getConstArray();
- const OUString * pNewSvcs = aNewSvcs.getConstArray();
- (void) pAvailSvcs;
- (void) pLastSvcs;
- (void) pNewSvcs;
-#endif
-
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
- SvxLocaleToLanguage( pAvailLocale[i] ) ) );
- Sequence< OUString > aCfgSvcs( aCurSvcs[k][ aCfgLocaleStr ] );
-
- // merge services list (previously configured to be listed first).
- aCfgSvcs = lcl_MergeSeq( aCfgSvcs, aNewSvcs );
-
-/*
- // there is at most one Hyphenator per language allowed
- // to be configured, thus we only use the first one found.
- if (k == 2 && aCfgSvcs.getLength() > 1)
- aCfgSvcs.realloc(1);
-*/
- aCurSvcs[k][ aCfgLocaleStr ] = aCfgSvcs;
- }
-
- //
- // set last found services to currently available ones
- //
- for (i = 0; i < nAvailLocales; ++i)
- {
- Sequence< OUString > aSvcImplNames(
- xLngSvcMgr->getAvailableServices( aService, pAvailLocale[i] ) );
-
-#if OSL_DEBUG_LEVEL > 1
- sal_Int32 nSvcs = aSvcImplNames.getLength();
- const OUString *pSvcImplName = aSvcImplNames.getConstArray();
- for (sal_Int32 j = 0; j < nSvcs; ++j)
- {
- OUString aImplName( pSvcImplName[j] );
- }
-#endif
-
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
- SvxLocaleToLanguage( pAvailLocale[i] ) ) );
- aLastFoundSvcs[k][ aCfgLocaleStr ] = aSvcImplNames;
- }
- }
-
- //
- // write new data back to configuration
- //
- for (int k = 0; k < nNumServices; ++k)
- {
- for (int i = 0; i < 2; ++i)
- {
- const sal_Char *pSubNodeName = (i == 0) ? apCurLists[k] : apLastFoundLists[k];
- OUString aSubNodeName( ::rtl::OUString::createFromAscii(pSubNodeName) );
-
- list_entry_map_t &rCurMap = (i == 0) ? aCurSvcs[k] : aLastFoundSvcs[k];
- list_entry_map_t::const_iterator aIt( rCurMap.begin() );
- sal_Int32 nVals = static_cast< sal_Int32 >( rCurMap.size() );
- Sequence< PropertyValue > aNewValues( nVals );
- PropertyValue *pNewValue = aNewValues.getArray();
- while (aIt != rCurMap.end())
- {
- OUString aCfgEntryName( aSubNodeName );
- aCfgEntryName += OUString::valueOf( (sal_Unicode) '/' );
- aCfgEntryName += (*aIt).first;
-
-#if OSL_DEBUG_LEVEL > 1
- Sequence< OUString > aSvcImplNames( (*aIt).second );
- sal_Int32 nSvcs = aSvcImplNames.getLength();
- const OUString *pSvcImplName = aSvcImplNames.getConstArray();
- for (sal_Int32 j = 0; j < nSvcs; ++j)
- {
- OUString aImplName( pSvcImplName[j] );
- }
-#endif
- pNewValue->Name = aCfgEntryName;
- pNewValue->Value <<= (*aIt).second;
- ++pNewValue;
- ++aIt;
- }
- OSL_ENSURE( pNewValue - aNewValues.getArray() == nVals,
- "possible mismatch of sequence size and property number" );
-
- {
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll - ReplaceSetProperties" );
- // add new or replace existing entries.
- sal_Bool bRes = aCfg.ReplaceSetProperties( aSubNodeName, aNewValues );
- if (!bRes)
- {
-#if OSL_DEBUG_LEVEL > 1
- OSL_FAIL( "failed to set new configuration values" );
-#endif
- }
- }
- }
- }
- OSL_ENSURE( nCurrentDataFilesChangedCheckValue != -1, "SvxLinguConfigUpdate::UpdateAll DataFilesChangedCheckValue not yet calculated!" );
- Any aAny;
-
- // for the time being (developer builds until OOo 3.0)
- // we should always check for everything available
- // otherwise we may miss a new installed extension dicitonary
- // just because e.g. the spellchecker is not asked what
- // languages it does support currently...
- // Since the check is on-demand occuring and executed once it should
- // not be too troublesome.
- // In OOo 3.0 we will not need the respective code anymore at all.
-// aAny <<= nCurrentDataFilesChangedCheckValue;
- aAny <<= (sal_Int32) -1; // keep the value set to 'need to check'
-
- aCfg.SetProperty( A2OU( "DataFilesChangedCheckValue" ), aAny );
-
- //! Note 1: the new values are commited when the 'aCfg' object
- //! gets destroyed.
- //! Note 2: the new settings in the configuration get applied
- //! because the 'LngSvcMgr' (in linguistic/source/lngsvcmgr.hxx)
- //! listens to the configuration for changes of the relevant
- //! properties and then applies the new settings.
-
- // nothing needs to be done anymore
- nNeedUpdating = 0;
- }
-}
-
-
-sal_Int32 SvxLinguConfigUpdate::CalcDataFilesChangedCheckValue()
-{
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::CalcDataFilesChangedCheckValue" );
-
- sal_Int32 nHashVal = 0;
- // nothing to be checked anymore since those old directory paths are gone by now
- return nHashVal;
-}
-
-
-sal_Bool SvxLinguConfigUpdate::IsNeedUpdateAll( sal_Bool bForceCheck )
-{
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::IsNeedUpdateAll" );
- if (nNeedUpdating == -1 || bForceCheck ) // need to check if updating is necessary
- {
- // calculate hash value for current data files
- nCurrentDataFilesChangedCheckValue = CalcDataFilesChangedCheckValue();
-
- // compare hash value and check value to see if anything has changed
- // and thus the configuration needs to be updated
- SvtLinguOptions aLinguOpt;
- SvtLinguConfig aCfg;
- aCfg.GetOptions( aLinguOpt );
- nNeedUpdating = (nCurrentDataFilesChangedCheckValue == aLinguOpt.nDataFilesChangedCheckValue) ? 0 : 1;
- }
- OSL_ENSURE( nNeedUpdating != -1,
- "need for linguistic configuration update should have been already checked." );
-
- return nNeedUpdating == 1;
-}
-
//! Dummy implementation in order to avoid loading of lingu DLL
//! when only the XSupportedLocales interface is used.
@@ -520,10 +158,6 @@
void ThesDummy_Impl::GetThes_Impl()
{
- // update configuration before accessing the service
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
- SvxLinguConfigUpdate::UpdateAll();
-
if (!xThes.is())
{
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
@@ -543,8 +177,7 @@
ThesDummy_Impl::getLocales()
throw(uno::RuntimeException)
{
- if (!SvxLinguConfigUpdate::IsNeedUpdateAll()) // configuration already update and thus lingu DLL's already loaded ?
- GetThes_Impl();
+ GetThes_Impl();
if (xThes.is())
return xThes->getLocales();
else if (!pLocaleSeq) // if not already loaded save startup time by avoiding loading them now
@@ -557,8 +190,7 @@
ThesDummy_Impl::hasLocale( const lang::Locale& rLocale )
throw(uno::RuntimeException)
{
- if (!SvxLinguConfigUpdate::IsNeedUpdateAll()) // configuration already update and thus lingu DLL's already loaded ?
- GetThes_Impl();
+ GetThes_Impl();
if (xThes.is())
return xThes->hasLocale( rLocale );
else if (!pLocaleSeq) // if not already loaded save startup time by avoiding loading them now
@@ -632,10 +264,6 @@
void SpellDummy_Impl::GetSpell_Impl()
{
- // update configuration before accessing the service
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
- SvxLinguConfigUpdate::UpdateAll();
-
if (!xSpell.is())
{
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
@@ -748,10 +376,6 @@
void HyphDummy_Impl::GetHyph_Impl()
{
- // update configuration before accessing the service
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
- SvxLinguConfigUpdate::UpdateAll();
-
if (!xHyph.is())
{
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
diff -ru libreoffice-3.5.5.3.orig/linguistic/Library_lng.mk libreoffice-3.5.5.3/linguistic/Library_lng.mk
--- libreoffice-3.5.5.3.orig/linguistic/Library_lng.mk 2012-07-13 12:23:35.568866084 +0100
+++ libreoffice-3.5.5.3/linguistic/Library_lng.mk 2012-07-16 08:49:27.810226966 +0100
@@ -56,6 +56,7 @@
tl \
ucbhelper \
utl \
+ vcl \
xo \
$(gb_STDLIBS) \
))
diff -ru libreoffice-3.5.5.3.orig/linguistic/prj/build.lst libreoffice-3.5.5.3/linguistic/prj/build.lst
--- libreoffice-3.5.5.3.orig/linguistic/prj/build.lst 2012-07-13 12:23:35.611866523 +0100
+++ libreoffice-3.5.5.3/linguistic/prj/build.lst 2012-07-16 08:49:27.820227082 +0100
@@ -1,2 +1,2 @@
-lg linguistic : svl xmloff ucbhelper comphelper ICU:icu LIBXSLT:libxslt NULL
+lg linguistic : svl vcl xmloff ucbhelper comphelper ICU:icu LIBXSLT:libxslt NULL
lg linguistic\prj nmake - all lg_prj NULL
diff -ru libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.cxx libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.cxx
--- libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.cxx 2012-07-13 12:23:35.585866257 +0100
+++ libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.cxx 2012-07-16 08:49:27.829227184 +0100
@@ -27,6 +27,7 @@
************************************************************************/
+#include <com/sun/star/deployment/ExtensionManager.hpp>
#include <com/sun/star/registry/XRegistryKey.hpp>
#include <com/sun/star/container/XContentEnumerationAccess.hpp>
#include <com/sun/star/container/XEnumeration.hpp>
@@ -270,8 +271,6 @@
}
}
-
-//IMPL_LINK( LngSvcMgrListenerHelper, TimeOut, Timer*, pTimer )
long LngSvcMgrListenerHelper::Timeout()
{
osl::MutexGuard aGuard( GetLinguMutex() );
@@ -483,11 +482,98 @@
pNames[2] = "ServiceManager/HyphenatorList";
pNames[3] = "ServiceManager/ThesaurusList";
EnableNotification( aNames );
+
+ UpdateAll();
+
+ aUpdateTimer.SetTimeout(500);
+ aUpdateTimer.SetTimeoutHdl(LINK(this, LngSvcMgr, updateAndBroadcast));
+
+ // request to be notified if an extension has been added/removed
+ uno::Reference<uno::XComponentContext> xContext(comphelper::getProcessComponentContext());
+
+ uno::Reference<deployment::XExtensionManager> xExtensionManager(
+ deployment::ExtensionManager::get(xContext));
+ if (xExtensionManager.is())
+ {
+ xMB = uno::Reference<util::XModifyBroadcaster>(xExtensionManager, uno::UNO_QUERY_THROW);
+
+ uno::Reference<util::XModifyListener> xListener(this);
+ xMB->addModifyListener( xListener );
+ }
+}
+
+// ::com::sun::star::util::XModifyListener
+void LngSvcMgr::modified(const lang::EventObject&)
+ throw(uno::RuntimeException)
+{
+ osl::MutexGuard aGuard(GetLinguMutex());
+ //assume that if an extension has been added/removed that
+ //it might be a dictionary extension, so drop our cache
+
+ delete pAvailSpellSvcs;
+ pAvailSpellSvcs = NULL;
+ delete pAvailGrammarSvcs;
+ pAvailGrammarSvcs = NULL;
+ delete pAvailHyphSvcs;
+ pAvailHyphSvcs = NULL;
+ delete pAvailThesSvcs;
+ pAvailThesSvcs = NULL;
+
+ //schedule in an update to execute in the main thread
+ aUpdateTimer.Start();
+}
+
+//run update, and inform everyone that dictionaries (may) have changed, this
+//needs to be run in the main thread because
+//utl::ConfigChangeListener_Impl::changesOccurred grabs the SolarMutex and we
+//get notified that an extension was added from an extension manager thread
+IMPL_LINK_NOARG(LngSvcMgr, updateAndBroadcast)
+{
+ osl::MutexGuard aGuard( GetLinguMutex() );
+
+ UpdateAll();
+
+ if (pListenerHelper)
+ {
+ pListenerHelper->AddLngSvcEvt(
+ linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN |
+ linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN |
+ linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN |
+ linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN );
+ }
+
+ return 0;
}
+void LngSvcMgr::stopListening()
+{
+ osl::MutexGuard aGuard(GetLinguMutex());
+
+ if (xMB.is())
+ {
+ try
+ {
+ uno::Reference<util::XModifyListener> xListener(this);
+ xMB->removeModifyListener(xListener);
+ }
+ catch (const uno::Exception&)
+ {
+ }
+
+ xMB.clear();
+ }
+}
+
+void LngSvcMgr::disposing(const lang::EventObject&)
+ throw (uno::RuntimeException)
+{
+ stopListening();
+}
LngSvcMgr::~LngSvcMgr()
{
+ stopListening();
+
// memory for pSpellDsp, pHyphDsp, pThesDsp, pListenerHelper
// will be freed in the destructor of the respective Reference's
// xSpellDsp, xGrammarDsp, xHyphDsp, xThesDsp
@@ -498,6 +584,252 @@
delete pAvailThesSvcs;
}
+namespace
+{
+ using lang::Locale;
+ using uno::Any;
+ using uno::Sequence;
+
+ sal_Bool lcl_FindEntry( const OUString &rEntry, const Sequence< OUString > &rCfgSvcs )
+ {
+ sal_Int32 nRes = -1;
+ sal_Int32 nEntries = rCfgSvcs.getLength();
+ const OUString *pEntry = rCfgSvcs.getConstArray();
+ for (sal_Int32 i = 0; i < nEntries && nRes == -1; ++i)
+ {
+ if (rEntry == pEntry[i])
+ nRes = i;
+ }
+ return nRes != -1;
+ }
+
+ Sequence< OUString > lcl_GetLastFoundSvcs(
+ SvtLinguConfig &rCfg,
+ const OUString &rLastFoundList ,
+ const Locale &rAvailLocale )
+ {
+ Sequence< OUString > aRes;
+
+ OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
+ LocaleToLanguage( rAvailLocale ) ) );
+
+ Sequence< OUString > aNodeNames( rCfg.GetNodeNames(rLastFoundList) );
+ sal_Bool bFound = lcl_FindEntry( aCfgLocaleStr, aNodeNames);
+
+ if (bFound)
+ {
+ Sequence< OUString > aNames(1);
+ OUString &rNodeName = aNames.getArray()[0];
+ rNodeName = rLastFoundList;
+ rNodeName += OUString::valueOf( (sal_Unicode)'/' );
+ rNodeName += aCfgLocaleStr;
+ Sequence< Any > aValues( rCfg.GetProperties( aNames ) );
+ if (aValues.getLength())
+ {
+ OSL_ENSURE( aValues.getLength() == 1, "unexpected length of sequence" );
+ Sequence< OUString > aSvcImplNames;
+ if (aValues.getConstArray()[0] >>= aSvcImplNames)
+ aRes = aSvcImplNames;
+ else
+ {
+ OSL_FAIL( "type mismatch" );
+ }
+ }
+ }
+
+ return aRes;
+ }
+
+ Sequence< OUString > lcl_RemoveMissingEntries(
+ const Sequence< OUString > &rCfgSvcs,
+ const Sequence< OUString > &rAvailSvcs )
+ {
+ Sequence< OUString > aRes( rCfgSvcs.getLength() );
+ OUString *pRes = aRes.getArray();
+ sal_Int32 nCnt = 0;
+
+ sal_Int32 nEntries = rCfgSvcs.getLength();
+ const OUString *pEntry = rCfgSvcs.getConstArray();
+ for (sal_Int32 i = 0; i < nEntries; ++i)
+ {
+ if (!pEntry[i].isEmpty() && lcl_FindEntry( pEntry[i], rAvailSvcs ))
+ pRes[ nCnt++ ] = pEntry[i];
+ }
+
+ aRes.realloc( nCnt );
+ return aRes;
+ }
+
+ Sequence< OUString > lcl_GetNewEntries(
+ const Sequence< OUString > &rLastFoundSvcs,
+ const Sequence< OUString > &rAvailSvcs )
+ {
+ sal_Int32 nLen = rAvailSvcs.getLength();
+ Sequence< OUString > aRes( nLen );
+ OUString *pRes = aRes.getArray();
+ sal_Int32 nCnt = 0;
+
+ const OUString *pEntry = rAvailSvcs.getConstArray();
+ for (sal_Int32 i = 0; i < nLen; ++i)
+ {
+ if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], rLastFoundSvcs ))
+ pRes[ nCnt++ ] = pEntry[i];
+ }
+
+ aRes.realloc( nCnt );
+ return aRes;
+ }
+
+ Sequence< OUString > lcl_MergeSeq(
+ const Sequence< OUString > &rCfgSvcs,
+ const Sequence< OUString > &rNewSvcs )
+ {
+ Sequence< OUString > aRes( rCfgSvcs.getLength() + rNewSvcs.getLength() );
+ OUString *pRes = aRes.getArray();
+ sal_Int32 nCnt = 0;
+
+ for (sal_Int32 k = 0; k < 2; ++k)
+ {
+ // add previously configuerd service first and append
+ // new found services at the end
+ const Sequence< OUString > &rSeq = k == 0 ? rCfgSvcs : rNewSvcs;
+
+ sal_Int32 nLen = rSeq.getLength();
+ const OUString *pEntry = rSeq.getConstArray();
+ for (sal_Int32 i = 0; i < nLen; ++i)
+ {
+ if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], aRes ))
+ pRes[ nCnt++ ] = pEntry[i];
+ }
+ }
+
+ aRes.realloc( nCnt );
+ return aRes;
+ }
+}
+
+void LngSvcMgr::UpdateAll()
+{
+ using beans::PropertyValue;
+ using lang::Locale;
+ using uno::Sequence;
+
+ typedef OUString OUstring_t;
+ typedef Sequence< OUString > Sequence_OUString_t;
+ typedef std::map< OUstring_t, Sequence_OUString_t > list_entry_map_t;
+
+ SvtLinguConfig aCfg;
+
+ const int nNumServices = 4;
+ const sal_Char * apServices[nNumServices] = { SN_SPELLCHECKER, SN_GRAMMARCHECKER, SN_HYPHENATOR, SN_THESAURUS };
+ const sal_Char * apCurLists[nNumServices] = { "ServiceManager/SpellCheckerList", "ServiceManager/GrammarCheckerList", "ServiceManager/HyphenatorList", "ServiceManager/ThesaurusList" };
+ const sal_Char * apLastFoundLists[nNumServices] = { "ServiceManager/LastFoundSpellCheckers", "ServiceManager/LastFoundGrammarCheckers", "ServiceManager/LastFoundHyphenators", "ServiceManager/LastFoundThesauri" };
+
+ // usage of indices as above: 0 = spell checker, 1 = grammar checker, 2 = hyphenator, 3 = thesaurus
+ std::vector< list_entry_map_t > aLastFoundSvcs(nNumServices);
+ std::vector< list_entry_map_t > aCurSvcs(nNumServices);
+
+ for (int k = 0; k < nNumServices; ++k)
+ {
+ OUString aService( ::rtl::OUString::createFromAscii( apServices[k] ) );
+ OUString aActiveList( ::rtl::OUString::createFromAscii( apCurLists[k] ) );
+ OUString aLastFoundList( ::rtl::OUString::createFromAscii( apLastFoundLists[k] ) );
+ sal_Int32 i;
+
+ //
+ // remove configured but not available language/services entries
+ //
+ Sequence< OUString > aNodeNames( aCfg.GetNodeNames( aActiveList ) ); // list of configured locales
+ sal_Int32 nNodeNames = aNodeNames.getLength();
+ const OUString *pNodeName = aNodeNames.getConstArray();
+ for (i = 0; i < nNodeNames; ++i)
+ {
+ Locale aLocale( CreateLocale( MsLangId::convertIsoStringToLanguage(pNodeName[i]) ) );
+ Sequence< OUString > aCfgSvcs( getConfiguredServices( aService, aLocale ));
+ Sequence< OUString > aAvailSvcs( getAvailableServices( aService, aLocale ));
+
+ aCfgSvcs = lcl_RemoveMissingEntries( aCfgSvcs, aAvailSvcs );
+
+ aCurSvcs[k][ pNodeName[i] ] = aCfgSvcs;
+ }
+
+ //
+ // add new available language/service entries
+ // and
+ // set last found services to currently available ones
+ //
+ Sequence< Locale > aAvailLocales( getAvailableLocales(aService) );
+ sal_Int32 nAvailLocales = aAvailLocales.getLength();
+ const Locale *pAvailLocale = aAvailLocales.getConstArray();
+ for (i = 0; i < nAvailLocales; ++i)
+ {
+ OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
+ LocaleToLanguage( pAvailLocale[i] ) ) );
+
+ Sequence< OUString > aAvailSvcs( getAvailableServices( aService, pAvailLocale[i] ));
+
+ aLastFoundSvcs[k][ aCfgLocaleStr ] = aAvailSvcs;
+
+ Sequence< OUString > aLastSvcs(
+ lcl_GetLastFoundSvcs( aCfg, aLastFoundList , pAvailLocale[i] ));
+ Sequence< OUString > aNewSvcs =
+ lcl_GetNewEntries( aLastSvcs, aAvailSvcs );
+
+ Sequence< OUString > aCfgSvcs( aCurSvcs[k][ aCfgLocaleStr ] );
+
+ // merge services list (previously configured to be listed first).
+ aCfgSvcs = lcl_MergeSeq( aCfgSvcs, aNewSvcs );
+
+ aCurSvcs[k][ aCfgLocaleStr ] = aCfgSvcs;
+ }
+ }
+
+ //
+ // write new data back to configuration
+ //
+ for (int k = 0; k < nNumServices; ++k)
+ {
+ for (int i = 0; i < 2; ++i)
+ {
+ const sal_Char *pSubNodeName = (i == 0) ? apCurLists[k] : apLastFoundLists[k];
+ OUString aSubNodeName( ::rtl::OUString::createFromAscii(pSubNodeName) );
+
+ list_entry_map_t &rCurMap = (i == 0) ? aCurSvcs[k] : aLastFoundSvcs[k];
+ list_entry_map_t::const_iterator aIt( rCurMap.begin() );
+ sal_Int32 nVals = static_cast< sal_Int32 >( rCurMap.size() );
+ Sequence< PropertyValue > aNewValues( nVals );
+ PropertyValue *pNewValue = aNewValues.getArray();
+ while (aIt != rCurMap.end())
+ {
+ OUString aCfgEntryName( aSubNodeName );
+ aCfgEntryName += OUString::valueOf( (sal_Unicode) '/' );
+ aCfgEntryName += (*aIt).first;
+
+ pNewValue->Name = aCfgEntryName;
+ pNewValue->Value <<= (*aIt).second;
+ ++pNewValue;
+ ++aIt;
+ }
+ OSL_ENSURE( pNewValue - aNewValues.getArray() == nVals,
+ "possible mismatch of sequence size and property number" );
+
+ {
+ // add new or replace existing entries.
+ sal_Bool bRes = aCfg.ReplaceSetProperties( aSubNodeName, aNewValues );
+ if (!bRes)
+ {
+#if OSL_DEBUG_LEVEL > 1
+ OSL_FAIL( "failed to set new configuration values" );
+#endif
+ }
+ }
+ }
+ }
+
+ //The new settings in the configuration get applied ! because we are
+ //listening to the configuration for changes of the relevant ! properties
+ //and Notify applies the new settings.
+}
void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
{
@@ -1263,32 +1595,21 @@
if (0 == rServiceName.compareToAscii( SN_SPELLCHECKER ))
{
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
- // already found without the need to restart the office
- delete pAvailSpellSvcs; pAvailSpellSvcs = 0;
GetAvailableSpellSvcs_Impl();
pInfoArray = pAvailSpellSvcs;
}
else if (0 == rServiceName.compareToAscii( SN_GRAMMARCHECKER ))
{
-// disable force re-loading of the cache - re-start needed for new grammer checkers: fdo#35270
-// delete pAvailGrammarSvcs; pAvailGrammarSvcs = 0;
GetAvailableGrammarSvcs_Impl();
pInfoArray = pAvailGrammarSvcs;
}
else if (0 == rServiceName.compareToAscii( SN_HYPHENATOR ))
{
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
- // already found without the need to restart the office
- delete pAvailHyphSvcs; pAvailHyphSvcs = 0;
GetAvailableHyphSvcs_Impl();
pInfoArray = pAvailHyphSvcs;
}
else if (0 == rServiceName.compareToAscii( SN_THESAURUS ))
{
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
- // already found without the need to restart the office
- delete pAvailThesSvcs; pAvailThesSvcs = 0;
GetAvailableThesSvcs_Impl();
pInfoArray = pAvailThesSvcs;
}
diff -ru libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.hxx libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.hxx
--- libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.hxx 2012-07-13 12:23:35.598866391 +0100
+++ libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.hxx 2012-07-16 08:49:27.833227231 +0100
@@ -30,7 +30,7 @@
#define _LINGUISTIC_LNGSVCMGR_HXX_
#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
-#include <cppuhelper/implbase4.hxx> // helper for implementations
+#include <cppuhelper/implbase5.hxx> // helper for implementations
#include <cppuhelper/interfacecontainer.h> //OMultiTypeInterfaceContainerHelper
@@ -39,8 +39,10 @@
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/linguistic2/XLinguServiceManager.hpp>
#include <com/sun/star/linguistic2/XAvailableLocales.hpp>
+#include <com/sun/star/util/XModifyBroadcaster.hpp>
+#include <com/sun/star/util/XModifyListener.hpp>
#include <unotools/configitem.hxx>
-
+#include <vcl/timer.hxx>
#include <boost/ptr_container/ptr_vector.hpp>
#include "linguistic/misc.hxx"
@@ -65,12 +67,13 @@
class LngSvcMgr :
- public cppu::WeakImplHelper4
+ public cppu::WeakImplHelper5
<
com::sun::star::linguistic2::XLinguServiceManager,
com::sun::star::linguistic2::XAvailableLocales,
com::sun::star::lang::XComponent,
- com::sun::star::lang::XServiceInfo
+ com::sun::star::lang::XServiceInfo,
+ com::sun::star::util::XModifyListener
>,
private utl::ConfigItem
{
@@ -90,6 +93,12 @@
com::sun::star::uno::Reference<
::com::sun::star::lang::XEventListener > xListenerHelper;
+ com::sun::star::uno::Reference<
+ ::com::sun::star::util::XModifyBroadcaster> xMB;
+
+ Timer aUpdateTimer;
+
+
com::sun::star::uno::Sequence<
com::sun::star::lang::Locale > aAvailSpellLocales;
com::sun::star::uno::Sequence<
@@ -140,6 +149,10 @@
virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames );
virtual void Commit();
+ void UpdateAll();
+ void stopListening();
+ DECL_LINK( updateAndBroadcast, void* );
+
public:
LngSvcMgr();
virtual ~LngSvcMgr();
@@ -167,6 +180,11 @@
virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException);
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& rSource ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XModifyListener
+ virtual void SAL_CALL modified( const ::com::sun::star::lang::EventObject& rEvent ) throw(::com::sun::star::uno::RuntimeException);
static inline ::rtl::OUString getImplementationName_Static();
static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();

@ -1,37 +0,0 @@
From 4fc8af89257436b9cad70de574a166aa11ec42f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 9 Jul 2012 12:51:16 +0100
Subject: [PATCH] Resolves: rhbz#838368 --view ignored while -view accepted
and our ooviewdoc script uses --view
Change-Id: Ice708f1c72c8d29d411ba21e93cb19876af13881
---
desktop/source/app/cmdlineargs.cxx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
index af7ee26..c67db8c 100644
--- a/desktop/source/app/cmdlineargs.cxx
+++ b/desktop/source/app/cmdlineargs.cxx
@@ -217,7 +217,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
bStartEvent = false;
bDisplaySpec = false;
}
- else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-view" )))
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "view" )))
{
// open in viewmode
bOpenEvent = false;
@@ -229,7 +229,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
bStartEvent = false;
bDisplaySpec = false;
}
- else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-show" )))
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "show" )))
{
// open in viewmode
bOpenEvent = false;
--
1.7.10.4

@ -1,144 +0,0 @@
From c29af1572ad15ac5199a09e5812fb8354c165329 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 22 Aug 2012 14:20:32 +0100
Subject: [PATCH] Resolves: rhbz#842292 crash in calling callback whose
instance was deleted
Change-Id: I4cc04d59f48b42cc105703daa9983dd7c9f7af62
---
.../controller/SlsDragAndDropContext.cxx | 6 +++--
.../slidesorter/controller/SlsScrollBarManager.cxx | 8 ++++---
.../controller/SlsSelectionFunction.cxx | 26 ++++++++++++++++++----
.../inc/controller/SlsScrollBarManager.hxx | 2 ++
4 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx b/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
index b8234b5..c1bf497 100644
--- a/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
@@ -100,11 +100,13 @@ void DragAndDropContext::UpdatePosition (
::boost::shared_ptr<InsertionIndicatorHandler> pInsertionIndicatorHandler (
mpTargetSlideSorter->GetController().GetInsertionIndicatorHandler());
- if ( ! (bAllowAutoScroll
+ bool bDoAutoScroll = bAllowAutoScroll
&& mpTargetSlideSorter->GetController().GetScrollBarManager().AutoScroll(
rMousePosition,
::boost::bind(
- &DragAndDropContext::UpdatePosition, this, rMousePosition, eMode, false))))
+ &DragAndDropContext::UpdatePosition, this, rMousePosition, eMode, false));
+
+ if (!bDoAutoScroll)
{
pInsertionIndicatorHandler->UpdatePosition(aMouseModelPosition, eMode);
diff --git a/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx b/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx
index a45f640..4a2d808 100644
--- a/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx
@@ -617,13 +617,15 @@
}
}
- maAutoScrollFunctor = ::boost::function<void(void)>();
+ clearAutoScrollFunctor();
mbIsAutoScrollActive = false;
return false;
}
-
-
+void ScrollBarManager::clearAutoScrollFunctor()
+{
+ maAutoScrollFunctor = ::boost::function<void(void)>();
+}
IMPL_LINK_NOARG(ScrollBarManager, AutoScrollTimeoutHandler)
{
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
index 6217c07..16c23ad 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
@@ -273,6 +273,7 @@ private:
SelectionMode meSelectionMode;
Point maSecondCorner;
Pointer maSavedPointer;
+ bool mbAutoScrollInstalled;
sal_Int32 mnAnchorIndex;
sal_Int32 mnSecondIndex;
view::ButtonBar::Lock maButtonBarLock;
@@ -1503,6 +1504,7 @@ MultiSelectionModeHandler::MultiSelectionModeHandler (
meSelectionMode(SM_Normal),
maSecondCorner(rMouseModelPosition),
maSavedPointer(mrSlideSorter.GetContentWindow()->GetPointer()),
+ mbAutoScrollInstalled(false),
mnAnchorIndex(-1),
mnSecondIndex(-1),
maButtonBarLock(rSlideSorter)
@@ -1523,6 +1525,12 @@ void MultiSelectionModeHandler::Initialize(const sal_uInt32 nEventCode)
MultiSelectionModeHandler::~MultiSelectionModeHandler (void)
{
+ if (mbAutoScrollInstalled)
+ {
+ //a call to this handler's MultiSelectionModeHandler::UpdatePosition
+ //may be still waiting to be called back
+ mrSlideSorter.GetController().GetScrollBarManager().clearAutoScrollFunctor();
+ }
mrSlideSorter.GetContentWindow()->SetPointer(maSavedPointer);
}
@@ -1564,6 +1572,14 @@ void MultiSelectionModeHandler::ProcessEvent (
bool MultiSelectionModeHandler::ProcessButtonUpEvent (
SelectionFunction::EventDescriptor& rDescriptor)
{
+ if (mbAutoScrollInstalled)
+ {
+ //a call to this handler's MultiSelectionModeHandler::UpdatePosition
+ //may be still waiting to be called back
+ mrSlideSorter.GetController().GetScrollBarManager().clearAutoScrollFunctor();
+ mbAutoScrollInstalled = false;
+ }
+
if (Match(rDescriptor.mnEventCode, BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK))
{
mrSelectionFunction.SwitchToNormalMode();
@@ -1620,16 +1636,18 @@ void MultiSelectionModeHandler::UpdatePosition (
SharedSdWindow pWindow (mrSlideSorter.GetContentWindow());
const Point aMouseModelPosition (pWindow->PixelToLogic(rMousePosition));
- if ( ! (bAllowAutoScroll && mrSlideSorter.GetController().GetScrollBarManager().AutoScroll(
+ bool bDoAutoScroll = bAllowAutoScroll && mrSlideSorter.GetController().GetScrollBarManager().AutoScroll(
rMousePosition,
::boost::bind(
&MultiSelectionModeHandler::UpdatePosition,
this,
rMousePosition,
- false))))
- {
+ false));
+
+ if (!bDoAutoScroll)
UpdateModelPosition(aMouseModelPosition);
- }
+
+ mbAutoScrollInstalled |= bDoAutoScroll;
}
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx
index 18807c1..41f3bde 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx
@@ -172,6 +172,8 @@ public:
void StopAutoScroll (void);
+ void clearAutoScrollFunctor();
+
enum Orientation { Orientation_Horizontal, Orientation_Vertical };
enum Unit { Unit_Pixel, Unit_Slide };
/** Scroll the slide sorter by setting the thumbs of the scroll bars and
--
1.7.11.2

@ -1,66 +0,0 @@
From e99813f9372d24d3d2d734573c582d3e257cb5cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 22 Aug 2012 11:46:50 +0100
Subject: [PATCH] Resolves: rhbz#846775 Clipboard must be disposed before
Selection
Change-Id: I968bc6da85cd444d504b08f85300a1fe251cdeee
---
sd/source/ui/slidesorter/controller/SlideSorterController.cxx | 5 +++--
sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
index 10ca623..ae9a6e9 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -110,10 +110,10 @@ SlideSorterController::SlideSorterController (SlideSorter& rSlideSorter)
mpPageSelector(),
mpFocusManager(),
mpSlotManager(),
- mpClipboard(),
mpScrollBarManager(),
mpCurrentSlideManager(),
mpSelectionManager(),
+ mpClipboard(),
mpInsertionIndicatorHandler(new InsertionIndicatorHandler(rSlideSorter)),
mpAnimator(new Animator(rSlideSorter)),
mpVisibleAreaManager(new VisibleAreaManager(rSlideSorter)),
@@ -156,9 +156,9 @@ void SlideSorterController::Init (void)
mpPageSelector.reset(new PageSelector(mrSlideSorter));
mpFocusManager.reset(new FocusManager(mrSlideSorter));
mpSlotManager.reset(new SlotManager(mrSlideSorter));
- mpClipboard.reset(new Clipboard(mrSlideSorter));
mpScrollBarManager.reset(new ScrollBarManager(mrSlideSorter));
mpSelectionManager.reset(new SelectionManager(mrSlideSorter));
+ mpClipboard.reset(new Clipboard(mrSlideSorter));
mpScrollBarManager->LateInitialization();
@@ -202,6 +202,7 @@ SlideSorterController::~SlideSorterController (void)
void SlideSorterController::Dispose (void)
{
mpInsertionIndicatorHandler->End(Animator::AM_Immediate);
+ mpClipboard.reset();
mpSelectionManager.reset();
mpAnimator->Dispose();
}
diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
index f456cb4..bf3d844 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
@@ -243,10 +243,10 @@ private:
::boost::scoped_ptr<PageSelector> mpPageSelector;
::boost::scoped_ptr<FocusManager> mpFocusManager;
::boost::shared_ptr<SlotManager> mpSlotManager;
- ::boost::scoped_ptr<controller::Clipboard> mpClipboard;
::boost::scoped_ptr<ScrollBarManager> mpScrollBarManager;
mutable ::boost::shared_ptr<CurrentSlideManager> mpCurrentSlideManager;
::boost::shared_ptr<SelectionManager> mpSelectionManager;
+ ::boost::scoped_ptr<controller::Clipboard> mpClipboard;
::boost::shared_ptr<InsertionIndicatorHandler> mpInsertionIndicatorHandler;
::boost::shared_ptr<Animator> mpAnimator;
::boost::scoped_ptr<VisibleAreaManager> mpVisibleAreaManager;
--
1.7.11.2

@ -1,74 +0,0 @@
From b0759366fc6cdda2db2f2cb4208df36c1b1fe8fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 12 Sep 2012 13:44:09 +0100
Subject: [PATCH] Resolves: rhbz#855541 XIOError handler multithread woes
We have two threads using X, on an XIOError both
threads call their XIOError handlers and two
calls to exit trample all over eachother.
Change-Id: I20defc6f84cc6ea2372a0d6c979e8078fe920a88
---
vcl/unx/generic/app/saldata.cxx | 6 ++++++
vcl/unx/gtk/app/gtkdata.cxx | 14 ++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/vcl/unx/generic/app/saldata.cxx b/vcl/unx/generic/app/saldata.cxx
index 1fb6a7a..0596dce 100644
--- a/vcl/unx/generic/app/saldata.cxx
+++ b/vcl/unx/generic/app/saldata.cxx
@@ -322,6 +322,12 @@ int X11SalData::XErrorHdl( Display *pDisplay, XErrorEvent *pEvent )
int X11SalData::XIOErrorHdl( Display * )
{
+ if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier())
+ {
+ pthread_exit(NULL);
+ return 0;
+ }
+
/* #106197# hack: until a real shutdown procedure exists
* _exit ASAP
*/
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index 8f3151c..867883f 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -526,6 +526,18 @@ GtkData::GtkData( SalInstance *pInstance )
m_aDispatchCondition = osl_createCondition();
}
+XIOErrorHandler aOrigXIOErrorHandler = NULL;
+
+int XIOErrorHdl(Display *pDisplay)
+{
+ if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier())
+ {
+ pthread_exit(NULL);
+ return 0;
+ }
+ return aOrigXIOErrorHandler ? aOrigXIOErrorHandler(pDisplay) : 0;
+}
+
GtkData::~GtkData()
{
Yield( true, true );
@@ -545,6 +557,7 @@ GtkData::~GtkData()
osl_destroyCondition( m_aDispatchCondition );
osl_releaseMutex( m_aDispatchMutex );
osl_destroyMutex( m_aDispatchMutex );
+ XSetIOErrorHandler(aOrigXIOErrorHandler);
}
void GtkData::Dispose()
@@ -664,6 +677,7 @@ void GtkData::Init()
// init gtk/gdk
gtk_init_check( &nParams, &pCmdLineAry );
gdk_error_trap_push();
+ aOrigXIOErrorHandler = XSetIOErrorHandler(XIOErrorHdl);
for (i = 0; i < nParams; i++ )
g_free( pCmdLineAry[i] );
--
1.7.11.4

@ -1,214 +0,0 @@
From db698b1878a38c732e73bf0e5ab06368b1a5f29a Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Wed, 19 Sep 2012 12:54:24 +0200
Subject: [PATCH 1/4] convert java XSL transformer into extension
Change-Id: Ided6c480969764073056830722c8996e0df52285
(cherry picked from commit 25113cd050d931b0e195fda6d6da9864a575070e)
---
filter/Extension_xslt2_transformer.mk | 18 +++++++++++++++++
filter/Module_filter.mk | 1 +
filter/source/xsltfilter/components.rdb | 8 ++++++++
filter/source/xsltfilter/description-en-US.txt | 1 +
filter/source/xsltfilter/description.xml | 28 ++++++++++++++++++++++++++
filter/source/xsltfilter/manifest.xml | 6 ++++++
postprocess/packcomponents/makefile.mk | 1 -
scp2/InstallModule_ooo.mk | 3 ---
scp2/source/ooo/common_brand.scp | 3 ---
scp2/source/ooo/file_library_ooo.scp | 1 -
scp2/source/ooo/file_ooo.scp | 6 ------
scp2/source/ooo/module_hidden_ooo.scp | 1 -
12 files changed, 62 insertions(+), 15 deletions(-)
create mode 100644 filter/Extension_xslt2_transformer.mk
create mode 100644 filter/source/xsltfilter/components.rdb
create mode 100644 filter/source/xsltfilter/description-en-US.txt
create mode 100644 filter/source/xsltfilter/description.xml
create mode 100644 filter/source/xsltfilter/manifest.xml
diff --git a/filter/Extension_xslt2_transformer.mk b/filter/Extension_xslt2_transformer.mk
new file mode 100644
index 0000000..ab239d8
--- /dev/null
+++ b/filter/Extension_xslt2_transformer.mk
@@ -0,0 +1,18 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Extension_Extension,xslt2-transformer,filter/source/xsltfilter))
+
+$(eval $(call gb_Extension_add_files,xslt2-transformer,,\
+ $(call gb_Jar_get_outdir_target,saxon9) \
+ $(call gb_Jar_get_outdir_target,XSLTFilter) \
+ $(SRCDIR)/filter/source/xsltfilter/components.rdb \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/filter/Module_filter.mk b/filter/Module_filter.mk
index 922d4f5..9c18157 100644
--- a/filter/Module_filter.mk
+++ b/filter/Module_filter.mk
@@ -72,6 +72,7 @@ $(eval $(call gb_Module_add_targets,filter,\
ifneq ($(SOLAR_JAVA),)
$(eval $(call gb_Module_add_targets,filter,\
+ Extension_xslt2_transformer \
Jar_XSLTFilter \
Jar_XSLTValidate \
))
diff --git a/filter/source/xsltfilter/components.rdb b/filter/source/xsltfilter/components.rdb
new file mode 100644
index 0000000..080cb7a
--- /dev/null
+++ b/filter/source/xsltfilter/components.rdb
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<components xmlns="http://openoffice.org/2010/uno-components">
+ <component loader="com.sun.star.loader.Java2" uri="./XSLTFilter.jar">
+ <implementation name="XSLTransformer">
+ <service name="com.sun.star.comp.JAXTHelper"/>
+ </implementation>
+ </component>
+</components>
diff --git a/filter/source/xsltfilter/description-en-US.txt b/filter/source/xsltfilter/description-en-US.txt
new file mode 100644
index 0000000..88c8abf
--- /dev/null
+++ b/filter/source/xsltfilter/description-en-US.txt
@@ -0,0 +1 @@
+The xslt2-transformer implements a transformer for XSLT import/export filters with support for XSLT 2.0.
diff --git a/filter/source/xsltfilter/description.xml b/filter/source/xsltfilter/description.xml
new file mode 100644
index 0000000..ae6abcb
--- /dev/null
+++ b/filter/source/xsltfilter/description.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description
+
+ xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:dep="http://libreoffice.org/extensions/description/2011"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <identifier value="org.libreoffice.JavaXSLT2Transformer"/>
+
+ <dependencies>
+ <dep:LibreOffice-minimal-version value="3.7"/>
+ </dependencies>
+
+ <version value="1.0.0"/>
+
+ <publisher>
+ <name xlink:href="http://www.documentfoundation.org" lang="en-US">The Document Foundation</name>
+ </publisher>
+
+ <display-name>
+ <name lang="en-US">XSLT 2.0 transformer</name>
+ </display-name>
+
+ <extension-description>
+ <src xlink:href="description-en-US.txt" lang="en-US" />
+ </extension-description>
+
+</description>
diff --git a/filter/source/xsltfilter/manifest.xml b/filter/source/xsltfilter/manifest.xml
new file mode 100644
index 0000000..a443e65
--- /dev/null
+++ b/filter/source/xsltfilter/manifest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-components"
+ manifest:full-path="components.rdb"/>
+</manifest:manifest>
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
index 09e296b..ccb87f0 100644
--- a/postprocess/packcomponents/makefile.mk
+++ b/postprocess/packcomponents/makefile.mk
@@ -288,7 +288,6 @@ my_components += component/framework/util/lomenubar
.IF "$(SOLAR_JAVA)" == "TRUE"
my_components += \
component/xmerge/source/bridge/XMergeBridge \
- component/filter/source/xsltfilter/XSLTFilter.jar \
component/filter/source/xsltvalidate/XSLTValidate \
component/scripting/java/ScriptFramework \
component/scripting/java/ScriptProviderForJava \
diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk
index 0c49414..640ea3a 100644
--- a/scp2/InstallModule_ooo.mk
+++ b/scp2/InstallModule_ooo.mk
@@ -158,9 +158,6 @@ $(eval $(call gb_InstallModule_add_defs,scp2/ooo,\
$(if $(filter YES,$(SYSTEM_HSQLDB)),\
-DHSQLDB_JAR=\""$(call gb_Helper_make_path,$(HSQLDB_JAR))"\" \
) \
- $(if $(filter YES,$(SYSTEM_SAXON)),\
- -DSAXON_JAR=\""$(call gb_Helper_make_path,$(SAXON_JAR))"\" \
- ) \
$(if $(filter-out YES,$(WITH_MOZILLA)),\
-DWITHOUT_MOZILLA \
) \
diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp
index 997a142..83c5c21 100644
--- a/scp2/source/ooo/common_brand.scp
+++ b/scp2/source/ooo/common_brand.scp
@@ -1259,9 +1259,6 @@ ProfileItem gid_Brand_Profileitem_Fundamental_Ure_Java_Classpath_Urls
#ifdef SYSTEM_HSQLDB
ValueList1 = HSQLDB_JAR;
#endif
-#ifdef SYSTEM_SAXON
- ValueList2 = SAXON_JAR;
-#endif
End
ProfileItem gid_Brand_Profileitem_Fundamental_Ure_Bin_Dir
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
index 66c50e2..f3448e5 100644
--- a/scp2/source/ooo/file_library_ooo.scp
+++ b/scp2/source/ooo/file_library_ooo.scp
@@ -1382,7 +1382,6 @@ STD_LIB_FILE( gid_File_Lib_Textfd, textfd )
STD_LIB_FILE( gid_File_Lib_Odfflatxml, odfflatxml )
#ifdef SOLAR_JAVA
-STD_JAR_FILE( gid_File_Jar_Xsltfilter, XSLTFilter )
STD_JAR_FILE( gid_File_Jar_Xsltvalidate, XSLTValidate )
#endif
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index ebdcf25..e274fc3 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -469,12 +469,6 @@ End
#endif
-#ifdef SOLAR_JAVA
-#ifndef SYSTEM_SAXON
-STD_JAR_FILE( gid_File_Jar_Saxon, saxon9 )
-#endif
-#endif
-
#ifndef AIX
#ifndef DISABLE_PYUNO
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 76e062b..e00a38b 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -129,7 +129,6 @@ Module gid_Module_Root_Files_3
Default = YES;
Styles = (HIDDEN_ROOT);
Files = (gid_File_Dat_Root3,
- gid_File_Jar_Saxon,
gid_File_Jar_Unoil,
gid_File_Jar_Hsqldb,
gid_File_Jar_Hsqldb_Sdbc,
--
1.7.11.7

@ -3,10 +3,10 @@ index 6280984..ffafa6b 100644
--- a/sw/Module_sw.mk --- a/sw/Module_sw.mk
+++ b/sw/Module_sw.mk +++ b/sw/Module_sw.mk
@@ -55,7 +55,6 @@ @@ -55,7 +55,6 @@
CppunitTest_sw_filters_test \ $(eval $(call gb_Module_add_slowcheck_targets,sw,\
CppunitTest_sw_macros_test \ CppunitTest_sw_macros_test \
CppunitTest_sw_subsequent_ooxmlexport \ CppunitTest_sw_subsequent_ooxmlexport \
- CppunitTest_sw_subsequent_ooxmltok \ - CppunitTest_sw_subsequent_ooxmlimport \
CppunitTest_sw_subsequent_ww8tok \ CppunitTest_sw_subsequent_ww8export \
CppunitTest_sw_subsequent_ww8import \
CppunitTest_sw_subsequent_rtfexport \ CppunitTest_sw_subsequent_rtfexport \
CppunitTest_sw_subsequent_rtftok \

@ -1,26 +0,0 @@
From 5155612a6e3a63d5b29fa3da522c2544dc6c8453 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Fri, 2 Nov 2012 10:06:46 +0100
Subject: [PATCH] do not strip install set
Change-Id: I68fb75cc35b96ecd8e4a56ef3d5304741f8a443a
---
instsetoo_native/util/makefile.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/instsetoo_native/util/makefile.mk b/instsetoo_native/util/makefile.mk
index 7906d74..54e399d 100644
--- a/instsetoo_native/util/makefile.mk
+++ b/instsetoo_native/util/makefile.mk
@@ -244,7 +244,7 @@ $(MAKETARGETS){$(PKGFORMAT:^".")} : $(ADDDEPS)
.ENDIF # "$(MAKETARGETS:e)"=="" && "$(MAKETARGETS:s/_//)"!="$(MAKETARGETS)"
.ENDIF # "$(MAKETARGETS)"!=""
openoffice_%{$(PKGFORMAT:^".") .archive} :
- $(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIOFFICETEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -strip -format $(@:e:s/.//) $(VERBOSESWITCH)
+ $(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIOFFICETEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -format $(@:e:s/.//) $(VERBOSESWITCH)
$(PERL) -w $(SOLARENV)$/bin$/gen_update_info.pl --buildid $(BUILD) --arch "$(RTL_ARCH)" --os "$(RTL_OS)" --lstfile $(PRJ)$/util$/openoffice.lst --product LibreOffice --languages $(subst,$(@:s/_/ /:1)_, $(@:b)) $(PRJ)$/util$/update.xml > $(MISC)/`date +%Y%m%d_%H%M`_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
$(foreach,i,$(alllangiso) openofficedev_$i) : $$@{$(PKGFORMAT:^".")}
--
1.7.11.7

@ -1,40 +0,0 @@
From efd2dddb7b2e7fe2a91f0da9b5f282bf1ca9cabb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 9 Nov 2012 17:11:22 +0000
Subject: [PATCH] fiddle system-db test to link on RHEL-6
Change-Id: Ic256a10dd45123ae45024f4e77edd3214bc4c931
---
configure.ac | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/configure.ac b/configure.ac
index c968dc2..307c467 100644
--- a/configure.in
+++ b/configure.in
@@ -7491,15 +7491,13 @@ if test "$with_system_db" = "yes"; then
SYSTEM_DB_CFLAGS="-DSYSTEM_DB_HEADER='<$db_header>'"
DB_LIB=
- dnl At least on OpenBSD dbver is not appended to the library
- if test "$_os" = "OpenBSD"; then
- dbver=''
- fi
- for dash in - ''; do
- AC_CHECK_LIB(db$dash$dbver, dbopen,
- [ DB_LIB="db$dash$dbver"; DB_CPPLIB="db_cxx$dash$dbver"; break ])
- AC_CHECK_LIB(db$dash$dbver, __db185_open,
- [ DB_LIB="db$dash$dbver"; DB_CPPLIB="db_cxx$dash$dbver"; break ])
+ dnl At least on OpenBSD and RHEL-6 dbver is not appended to the library
+ dnl even though the headers are in a versioned dir
+ for suffix in '' '-$dbver' '$dbver' ''; do
+ AC_CHECK_LIB(db$suffix, dbopen,
+ [ DB_LIB="db$suffix"; DB_CPPLIB="db_cxx$suffix"; break ])
+ AC_CHECK_LIB(db$suffix, __db185_open,
+ [ DB_LIB="db$suffix"; DB_CPPLIB="db_cxx$suffix"; break ])
done
if test -z "$DB_LIB"; then
--
1.7.11.7

@ -1,208 +0,0 @@
From f1c795baf1268c2650c706fc2aec28c2a7fbaf0e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 23 Nov 2012 09:42:39 +0000
Subject: [PATCH] split qnametostr up to try and make .o's small enough for
ppc64
i.e. relocation truncated to fix: R_PPC64_TOC16_DS
while I'm at it merge the standalone header/footer files into the .xslt and
simplify the makefile.
Change-Id: Iee0e9b5dd96868f49f1bed22fb5dc6d28c8cef81
---
writerfilter/CustomTarget_source.mk | 16 +++----
writerfilter/Library_writerfilter.mk | 21 ++-------
writerfilter/source/doctok/qnametostr.xsl | 6 +++
writerfilter/source/ooxml/qnametostr.xsl | 8 +++-
.../source/resourcemodel/qnametostrcore.cxx | 52 ++++++++++++++++++++++
writerfilter/source/resourcemodel/qnametostrfooter | 7 ---
writerfilter/source/resourcemodel/qnametostrheader | 48 --------------------
7 files changed, 74 insertions(+), 84 deletions(-)
create mode 100644 writerfilter/source/resourcemodel/qnametostrcore.cxx
delete mode 100644 writerfilter/source/resourcemodel/qnametostrfooter
delete mode 100644 writerfilter/source/resourcemodel/qnametostrheader
diff --git a/writerfilter/CustomTarget_source.mk b/writerfilter/CustomTarget_source.mk
index fc29784..5ee3041 100644
--- a/writerfilter/CustomTarget_source.mk
+++ b/writerfilter/CustomTarget_source.mk
@@ -157,8 +157,8 @@
# resourcemodel
-wf_GEN_model_QNameToStr_cxx=$(writerfilter_WORK)/qnametostr.cxx
-wf_GEN_ooxml_QNameToStr_tmp=$(writerfilter_WORK)/OOXMLqnameToStr.tmp
+wf_GEN_ooxml_QNameToStr_cxx=$(writerfilter_WORK)/doctok/qnametostr.cxx
+wf_GEN_ooxml_QNameToStr_cxx=$(writerfilter_WORK)/ooxml/qnametostr.cxx
wf_GEN_model_SprmCodeToStr_cxx=$(writerfilter_WORK)/sprmcodetostr.cxx
wf_GEN_model_SprmCodeToStr_tmp=$(writerfilter_WORK)/sprmcodetostr.tmp
wf_GEN_doctok_QnameToStr_tmp=$(writerfilter_WORK)/DOCTOKqnameToStr.tmp
@@ -170,18 +170,14 @@
wf_DEP_ooxml_namespaces_txt=$(OUTDIR)/inc/oox/namespaces.txt
wf_GEN_ooxml_preprocess_xsl=$(writerfilter_WORK)/modelpreprocess.xsl
-$(wf_GEN_ooxml_QNameToStr_tmp): $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed)
+$(wf_GEN_ooxml_QNameToStr_cxx): $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed) $(wf_SRC_ooxml_FactoryTools_xsl)
$(call gb_Output_announce,$@,build,XSL,1)
$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed)) > $@
-$(wf_GEN_doctok_QnameToStr_tmp): $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model) | $(writerfilter_WORK)/.dir
+$(wf_GEN_doctok_QnameToStr_cxx): $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model) $(wf_SRC_doctok_ResourceTools_xsl) | $(writerfilter_WORK)/.dir
$(call gb_Output_announce,$@,build,XSL,1)
$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model)) > $@
-$(wf_GEN_model_QNameToStr_cxx): $(wf_GEN_ooxml_QNameToStr_tmp) $(wf_GEN_doctok_QnameToStr_tmp) $(writerfilter_SRC)/resourcemodel/qnametostrheader $(writerfilter_SRC)/resourcemodel/qnametostrfooter $(wf_SRC_ooxml_FactoryTools_xsl) $(wf_SRC_doctok_ResourceTools_xsl)
- $(call gb_Output_announce,$@,build,CAT,1)
- cat $(writerfilter_SRC)/resourcemodel/qnametostrheader $(wf_GEN_ooxml_QNameToStr_tmp) $(wf_GEN_doctok_QnameToStr_tmp) $(writerfilter_SRC)/resourcemodel/qnametostrfooter > $@
-
$(wf_GEN_model_SprmCodeToStr_tmp) : $(wf_SRC_doctok_SprmCodeToStr_xsl) $(wf_SRC_doctok_Model) | $(writerfilter_WORK)/.dir
$(call gb_Output_announce,$@,build,XSL,1)
$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_doctok_SprmCodeToStr_xsl) $(wf_SRC_doctok_Model)) > $@
@@ -218,7 +214,8 @@
$(wf_GEN_ooxml_FastTokens_hxx) \
$(wf_GEN_ooxml_GperfFastToken_hxx) \
$(wf_GEN_ooxml_NamespaceIds_hxx) \
- $(wf_GEN_model_QNameToStr_cxx) \
+ $(wf_GEN_doctok_QNameToStr_cxx) \
+ $(wf_GEN_ooxml_QNameToStr_cxx) \
$(wf_GEN_model_SprmCodeToStr_cxx) \
$(patsubst %,$(writerfilter_WORK)/OOXMLFactory_%.hxx,$(WRITERFILTER_OOXMLNAMESPACES)) \
$(patsubst %,$(writerfilter_WORK)/OOXMLFactory_%.cxx,$(WRITERFILTER_OOXMLNAMESPACES)) \
diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
index 1d7c667..870732f 100644
--- a/writerfilter/Library_writerfilter.mk
+++ b/writerfilter/Library_writerfilter.mk
@@ -170,6 +170,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
writerfilter/source/resourcemodel/TagLogger \
writerfilter/source/resourcemodel/WW8Analyzer \
writerfilter/source/resourcemodel/XPathLogger \
+ writerfilter/source/resourcemodel/qnametostrcore \
writerfilter/source/resourcemodel/resourcemodel \
writerfilter/source/resourcemodel/util \
))
@@ -180,24 +181,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,writerfilter,\
CustomTarget/writerfilter/source/OOXMLFactory_generated \
CustomTarget/writerfilter/source/OOXMLFactory_values \
CustomTarget/writerfilter/source/sprmcodetostr \
+ CustomTarget/writerfilter/source/doctok/qnametostr \
+ CustomTarget/writerfilter/source/ooxml/qnametostr \
))
-ifneq ($(COM)-$(OS)-$(CPUNAME),GCC-LINUX-POWERPC64)
-#Apparently some compilers, according to the original .mk this was converted
-#from, require this to be noopt or they fail to compile it, probably good to
-#revisit that and narrow this down to where it's necessary
-$(eval $(call gb_Library_add_generated_cxxobjects,writerfilter,\
- CustomTarget/writerfilter/source/qnametostr \
- , $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \
-))
-else
-#Ironically, on RHEL-6 PPC64 with no-opt the output is too large for the
-#toolchain, "Error: operand out of range", but it build fine with
-#normal flags
-$(eval $(call gb_Library_add_generated_cxxobjects,writerfilter,\
- CustomTarget/writerfilter/source/qnametostr \
- , $(gb_LinkTarget_EXCEPTIONFLAGS) \
-))
-endif
-
# vim: set noet sw=4 ts=4:
diff --git a/writerfilter/source/doctok/qnametostr.xsl b/writerfilter/source/doctok/qnametostr.xsl
index a416512..e3009c9 100644
--- a/writerfilter/source/doctok/qnametostr.xsl
+++ b/writerfilter/source/doctok/qnametostr.xsl
@@ -22,8 +22,14 @@
<xsl:include href="resourcetools.xsl"/>
<xsl:template match="/">
+#include "doctok/resourceids.hxx"
+#include "resourcemodel/QNameToString.hxx"
+
+namespace writerfilter
+{
<xsl:apply-templates select=".//UML:Model" mode="qnametostr"/>
<xsl:apply-templates select='.//UML:Model' mode='sprmidstoxml'/>
<xsl:apply-templates select='.//UML:Model' mode='analyzerdoctokids'/>
+}
</xsl:template>
</xsl:stylesheet>
diff --git a/writerfilter/source/ooxml/qnametostr.xsl b/writerfilter/source/ooxml/qnametostr.xsl
index 1dc689f..a7a7d6c 100644
--- a/writerfilter/source/ooxml/qnametostr.xsl
+++ b/writerfilter/source/ooxml/qnametostr.xsl
@@ -113,8 +113,14 @@ void ooxmlidsToXML(::std::ostream &amp; out)
</xsl:template>
<xsl:template match="/">
+#include "ooxml/resourceids.hxx"
+#include "resourcemodel/QNameToString.hxx"
+
+namespace writerfilter
+{
<xsl:call-template name="qnametostr"/>
<xsl:call-template name="ooxmlidstoxml"/>
+}
</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
diff --git a/writerfilter/source/resourcemodel/qnametostrcore.cxx b/writerfilter/source/resourcemodel/qnametostrcore.cxx
new file mode 100644
index 0000000..81ed0f1
--- /dev/null
+++ b/writerfilter/source/resourcemodel/qnametostrcore.cxx
@@ -0,0 +1,52 @@
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+#include <resourcemodel/QNameToString.hxx>
+
+namespace writerfilter
+{
+
+QNameToString::Pointer_t QNameToString::pInstance;
+
+QNameToString::Pointer_t WRITERFILTER_RESOURCEMODEL_DLLPUBLIC QNameToString::Instance()
+{
+ if (pInstance.get() == NULL)
+ pInstance = QNameToString::Pointer_t(new QNameToString());
+
+ return pInstance;
+}
+
+string WRITERFILTER_RESOURCEMODEL_DLLPUBLIC QNameToString::operator()(Id qName)
+{
+ string sResult;
+
+ Map::const_iterator aIt = mMap.find(qName);
+
+ if (aIt != mMap.end())
+ sResult = aIt->second;
+
+ return mMap[qName];
+}
+
+QNameToString::QNameToString()
+{
+ init_doctok();
+ init_ooxml();
+}
+
+}

@ -1,193 +0,0 @@
From 90b9271771927a72dc27e71957376dd67c8f6d43 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim.muller@collabora.co.uk>
Date: Sun, 29 Jul 2012 19:14:05 +0200
Subject: [PATCH 1/7] tentative initial attempt at re-work for new playbin
Change-Id: I257bdda8469be624d0cbeab21cff2c2e1c94cc6f
Signed-off-by: David Tardon <dtardon@redhat.com>
---
avmedia/source/gstreamer/gstplayer.cxx | 94 ++++++++++++++++++++++++++--------
1 file changed, 74 insertions(+), 20 deletions(-)
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index 863d1e8..d95342a 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -38,7 +38,9 @@
#include "gstframegrabber.hxx"
#include "gstwindow.hxx"
-#include <gst/interfaces/xoverlay.h>
+#ifndef AVMEDIA_GST_0_10
+# include <gst/video/videooverlay.h>
+#endif
#define AVMEDIA_GST_PLAYER_IMPLEMENTATIONNAME "com.sun.star.comp.avmedia.Player_GStreamer"
#define AVMEDIA_GST_PLAYER_SERVICENAME "com.sun.star.media.Player_GStreamer"
@@ -96,7 +98,7 @@ Player::~Player()
if( mpPlaybin )
{
gst_element_set_state( mpPlaybin, GST_STATE_NULL );
- gst_object_unref( GST_OBJECT( mpPlaybin ) );
+ g_object_unref( G_OBJECT( mpPlaybin ) );
mpPlaybin = NULL;
}
@@ -110,7 +112,7 @@ Player::~Player()
// ------------------------------------------------------------------------------
-static gboolean gst_pipeline_bus_callback( GstBus *, GstMessage *message, gpointer data )
+static gboolean pipeline_bus_callback( GstBus *, GstMessage *message, gpointer data )
{
Player* pPlayer = static_cast<Player*>(data);
@@ -119,7 +121,7 @@ static gboolean gst_pipeline_bus_callback( GstBus *, GstMessage *message, gpoint
return TRUE;
}
-static GstBusSyncReply gst_pipeline_bus_sync_handler( GstBus *, GstMessage * message, gpointer data )
+static GstBusSyncReply pipeline_bus_sync_handler( GstBus *, GstMessage * message, gpointer data )
{
Player* pPlayer = static_cast<Player*>(data);
@@ -144,7 +146,7 @@ void Player::processMessage( GstMessage *message )
if( newstate == GST_STATE_PAUSED &&
pendingstate == GST_STATE_VOID_PENDING &&
mpXOverlay )
- gst_x_overlay_expose( mpXOverlay );
+ gst_video_overlay_expose( mpXOverlay );
if (mbPlayPending)
mbPlayPending = ((newstate == GST_STATE_READY) || (newstate == GST_STATE_PAUSED));
@@ -154,6 +156,26 @@ void Player::processMessage( GstMessage *message )
}
}
+static gboolean wrap_element_query_position (GstElement *element, GstFormat format, gint64 *cur)
+{
+#ifdef AVMEDIA_GST_0_10
+ GstFormat my_format = format;
+ return gst_element_query_position( mpPlaybin, &my_format, cur) && my_format == format && *cur > 0L;
+#else
+ return gst_element_query_position( element, format, cur );
+#endif
+}
+
+static gboolean wrap_element_query_duration (GstElement *element, GstFormat format, gint64 *duration)
+{
+#ifdef AVMEDIA_GST_0_10
+ GstFormat my_format = format;
+ return gst_element_query_duration( mpPlaybin, &my_format, duration) && my_format == format && *duration > 0L;
+#else
+ return gst_element_query_duration( element, format, duration );
+#endif
+}
+
GstBusSyncReply Player::processSyncMessage( GstMessage *message )
{
DBG( "%p processSyncMessage: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
@@ -169,17 +191,17 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
}
#endif
- if (message->structure) {
- if( !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) && mnWindowID != 0 ) {
- if( mpXOverlay )
- g_object_unref( G_OBJECT ( mpXOverlay ) );
- mpXOverlay = GST_X_OVERLAY( GST_MESSAGE_SRC( message ) );
- g_object_ref( G_OBJECT ( mpXOverlay ) );
- gst_x_overlay_set_xwindow_id( mpXOverlay, mnWindowID );
- return GST_BUS_DROP;
- }
+ if (gst_message_has_name (message, "prepare-xwindow-id") && mnWindowID != 0 )
+ {
+ if( mpXOverlay )
+ g_object_unref( G_OBJECT ( mpXOverlay ) );
+ mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
+ g_object_ref( G_OBJECT ( mpXOverlay ) );
+ gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
+ return GST_BUS_DROP;
}
+#ifdef AVMEDIA_GST_0_10
if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_STATE_CHANGED ) {
if( message->src == GST_OBJECT( mpPlaybin ) ) {
GstState newstate, pendingstate;
@@ -193,10 +215,8 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
DBG( "%p change to paused received", this );
if( mnDuration == 0) {
- GstFormat format = GST_FORMAT_TIME;
gint64 gst_duration = 0L;
-
- if( gst_element_query_duration( mpPlaybin, &format, &gst_duration) && format == GST_FORMAT_TIME && gst_duration > 0L )
+ if( wrap_element_query_duration( mpPlaybin, GST_FORMAT_TIME, &gst_duration) )
mnDuration = gst_duration;
}
@@ -234,6 +254,40 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
}
}
}
+#else
+ // We get to use the exciting new playbin2 ! (now known as playbin)
+ if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ASYNC_DONE ) {
+ if( mnDuration == 0) {
+ gint64 gst_duration = 0L;
+ if( wrap_element_query_duration( mpPlaybin, GST_FORMAT_TIME, &gst_duration) )
+ mnDuration = gst_duration;
+ }
+ if( mnWidth == 0 ) {
+ GstPad *pad = NULL;
+ GstCaps *caps;
+
+ g_signal_emit_by_name( mpPlaybin, "get-video-pad", 0, &pad );
+
+ if( pad ) {
+ int w = 0, h = 0;
+
+ caps = gst_pad_get_current_caps( pad );
+
+ if( gst_structure_get( gst_caps_get_structure (caps, 0),
+ "width", G_TYPE_INT, &w,
+ "height", G_TYPE_INT, &h,
+ NULL ) ) {
+ mnWidth = w;
+ mnHeight = h;
+
+ DBG( "queried size: %d x %d", mnWidth, mnHeight );
+
+ maSizeCondition.set();
+ }
+ gst_caps_unref( caps );
+ }
+ }
+#endif
} else if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR ) {
if( mnWidth == 0 ) {
// an error occurred, set condition so that OOo thread doesn't wait for us
@@ -265,9 +319,9 @@ void Player::preparePlaybin( const ::rtl::OUString& rURL, bool bFakeVideo )
g_object_set( G_OBJECT( mpPlaybin ), "uri", ascURL.getStr() , NULL );
pBus = gst_element_get_bus( mpPlaybin );
- gst_bus_add_watch( pBus, gst_pipeline_bus_callback, this );
+ gst_bus_add_watch( pBus, pipeline_bus_callback, this );
DBG( "%p set sync handler", this );
- gst_bus_set_sync_handler( pBus, gst_pipeline_bus_sync_handler, this );
+ gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this );
g_object_unref( pBus );
}
@@ -387,7 +441,7 @@ double SAL_CALL Player::getMediaTime( )
// get current position in the stream
GstFormat format = GST_FORMAT_TIME;
gint64 gst_position;
- if( gst_element_query_position( mpPlaybin, &format, &gst_position ) && format == GST_FORMAT_TIME && gst_position > 0L )
+ if( wrap_element_query_position( mpPlaybin, GST_FORMAT_TIME, &gst_position ) )
position = gst_position / 1E9;
}
--
1.7.11.4

@ -1,832 +0,0 @@
From a3f96fb4ddcc657f4448089eff07531735f23979 Mon Sep 17 00:00:00 2001
From: Michael Meeks <michael.meeks@suse.com>
Date: Mon, 30 Jul 2012 15:15:58 +0200
Subject: [PATCH 2/7] gstreamer: make gstreamer 1.0 and 0.10 dual compile
Add fallback activation of an _OLD media component to the core.
Compile both a 0.10 and 1.0 version of the gstreamer component
Conflicts:
distro-configs/LibreOfficeAndroidX86.conf
distro-configs/LibreOfficeLinux.conf
Change-Id: I91f65d05391cb2d7e02f9cff18f96178a128705O1
---
Repository.mk | 1 +
avmedia/Library_avmediagst.mk | 8 +--
avmedia/Module_avmedia.mk | 6 ++
.../gstreamer/avmediagstreamer_0_10.component | 6 ++
avmedia/source/gstreamer/gst_0_10.cxx | 15 +++++
avmedia/source/gstreamer/gstplayer.cxx | 69 ++++++++++++++--------
avmedia/source/gstreamer/gstplayer.hxx | 4 +-
avmedia/source/gstreamer/gstuno.cxx | 17 ++++--
avmedia/source/inc/mediamisc.hxx | 11 +---
avmedia/source/viewer/mediawindowbase_impl.cxx | 21 ++++++-
config_host.mk.in | 3 +
configure.in | 41 +++++++++++--
distro-configs/LibreOfficeAndroid.conf | 1 +
distro-configs/LibreOfficeLinux.conf | 2 +-
distro-configs/LibreOfficeOpenBSD.conf | 2 +-
distro-configs/LibreOfficeiOS.conf | 1 +
distro-configs/OxygenOfficeLinux.conf | 2 +-
postprocess/packcomponents/makefile.mk | 4 ++
scp2/InstallModule_ooo.mk | 3 +
scp2/source/ooo/file_library_ooo.scp | 6 +-
scp2/source/ooo/module_hidden_ooo.scp | 19 +++---
svx/source/sdr/contact/viewcontact.cxx | 2 +-
22 files changed, 174 insertions(+), 70 deletions(-)
create mode 100644 avmedia/source/gstreamer/avmediagstreamer_0_10.component
create mode 100644 avmedia/source/gstreamer/gst_0_10.cxx
diff --git a/Repository.mk b/Repository.mk
index 67ba527..881029e 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -417,6 +417,7 @@ endif
$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
avmediagst \
+ avmediagst_0_10 \
avmediawin \
cached1 \
collator_data \
diff --git a/avmedia/Library_avmediagst.mk b/avmedia/Library_avmediagst.mk
index b6323bb..b7eeacd 100644
--- a/avmedia/Library_avmediagst.mk
+++ b/avmedia/Library_avmediagst.mk
@@ -33,8 +33,9 @@ $(eval $(call gb_Library_set_componentfile,avmediagst,avmedia/source/gstreamer/a
$(eval $(call gb_Library_set_include,avmediagst,\
$$(INCLUDE) \
-I$(SRCDIR)/avmedia/source/inc \
- $(shell pkg-config --cflags gstreamer-0.10, gstreamer-plugins-base-0.10) \
+ $(GSTREAMER_CFLAGS) \
))
+$(eval $(call gb_Library_add_libs,avmediagst,$(GSTREAMER_LIBS)))
$(eval $(call gb_Library_use_api,avmediagst,\
udkapi \
@@ -57,11 +58,6 @@ $(eval $(call gb_Library_use_libraries,avmediagst,\
$(gb_STDLIBS) \
))
-$(eval $(call gb_Library_add_libs,avmediagst,\
- $(shell pkg-config --libs gstreamer-0.10, gstreamer-plugins-base-0.10) \
- -lgstinterfaces-0.10 \
-))
-
$(eval $(call gb_Library_add_exception_objects,avmediagst,\
avmedia/source/gstreamer/gstmanager \
avmedia/source/gstreamer/gstplayer \
diff --git a/avmedia/Module_avmedia.mk b/avmedia/Module_avmedia.mk
index 729c24f..ef50457 100644
--- a/avmedia/Module_avmedia.mk
+++ b/avmedia/Module_avmedia.mk
@@ -40,6 +40,12 @@ $(eval $(call gb_Module_add_targets,avmedia,\
))
endif
+ifeq ($(ENABLE_GSTREAMER_0_10),TRUE)
+$(eval $(call gb_Module_add_targets,avmedia,\
+ Library_avmediagst_0_10 \
+))
+endif
+
ifeq ($(GUIBASE),aqua)
$(eval $(call gb_Module_add_targets,avmedia,\
Library_avmediaQuickTime \
diff --git a/avmedia/source/gstreamer/avmediagstreamer_0_10.component b/avmedia/source/gstreamer/avmediagstreamer_0_10.component
new file mode 100644
index 0000000..3fc61d7
--- /dev/null
+++ b/avmedia/source/gstreamer/avmediagstreamer_0_10.component
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<component loader="com.sun.star.loader.SharedLibrary" xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.media.Manager_GStreamer_0_10">
+ <service name="com.sun.star.comp.avmedia.Manager_GStreamer_0_10"/>
+ </implementation>
+</component>
diff --git a/avmedia/source/gstreamer/gst_0_10.cxx b/avmedia/source/gstreamer/gst_0_10.cxx
new file mode 100644
index 0000000..a0624c4
--- /dev/null
+++ b/avmedia/source/gstreamer/gst_0_10.cxx
@@ -0,0 +1,15 @@
+#define AVMEDIA_GST_0_10
+
+// forward compatibility goodness
+#include <gst/interfaces/xoverlay.h>
+#define gst_video_overlay_expose(a) gst_x_overlay_expose(GST_X_OVERLAY (a))
+#define gst_video_overlay_set_window_handle(a,b) gst_x_overlay_set_xwindow_id( \
+ reinterpret_cast<GstXOverlay *>(a), (b) )
+#define GST_VIDEO_OVERLAY(a) reinterpret_cast<GstVideoOverlay *>(a)
+
+// #define GstVideoOverlay GstXOverlay
+
+#include "gstmanager.cxx"
+#include "gstplayer.cxx"
+#include "gstuno.cxx"
+#include "gstwindow.cxx"
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index d95342a..28e5d34 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -33,7 +33,6 @@
#include <vcl/syschild.hxx>
#include <vcl/sysdata.hxx>
-
#include "gstplayer.hxx"
#include "gstframegrabber.hxx"
#include "gstwindow.hxx"
@@ -45,8 +44,14 @@
#define AVMEDIA_GST_PLAYER_IMPLEMENTATIONNAME "com.sun.star.comp.avmedia.Player_GStreamer"
#define AVMEDIA_GST_PLAYER_SERVICENAME "com.sun.star.media.Player_GStreamer"
-#if OSL_DEBUG_LEVEL > 2
-#define DBG OSL_TRACE
+#ifdef AVMEDIA_GST_0_10
+# define AVVERSION "gst 0.10: "
+#else
+# define AVVERSION "gst 1.0: "
+#endif
+
+#if 1 //OSL_DEBUG_LEVEL > 2
+#define DBG(...) do { fprintf (stderr, "%s", AVVERSION); fprintf (stderr, __VA_ARGS__); fprintf (stderr, "\n"); } while (0);
#else
#define DBG(...)
#endif
@@ -83,15 +88,22 @@ Player::Player( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) :
mbInitialized = gst_init_check( &argc, &argv, &pError );
+ DBG( "%p Player::Player", this );
+
if (pError != NULL)
+ {
// TODO: thow an exception?
+ DBG( "%p Player::Player error '%s'", this, pError->message );
g_error_free (pError);
+ }
}
// ------------------------------------------------------------------------------
Player::~Player()
{
+ DBG( "%p Player::~Player", this );
+
// Release the elements and pipeline
if( mbInitialized )
{
@@ -160,7 +172,7 @@ static gboolean wrap_element_query_position (GstElement *element, GstFormat form
{
#ifdef AVMEDIA_GST_0_10
GstFormat my_format = format;
- return gst_element_query_position( mpPlaybin, &my_format, cur) && my_format == format && *cur > 0L;
+ return gst_element_query_position( element, &my_format, cur) && my_format == format && *cur > 0L;
#else
return gst_element_query_position( element, format, cur );
#endif
@@ -170,7 +182,7 @@ static gboolean wrap_element_query_duration (GstElement *element, GstFormat form
{
#ifdef AVMEDIA_GST_0_10
GstFormat my_format = format;
- return gst_element_query_duration( mpPlaybin, &my_format, duration) && my_format == format && *duration > 0L;
+ return gst_element_query_duration( element, &my_format, duration) && my_format == format && *duration > 0L;
#else
return gst_element_query_duration( element, format, duration );
#endif
@@ -178,21 +190,27 @@ static gboolean wrap_element_query_duration (GstElement *element, GstFormat form
GstBusSyncReply Player::processSyncMessage( GstMessage *message )
{
- DBG( "%p processSyncMessage: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
+// DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
-#if OSL_DEBUG_LEVEL > 0
+#if 1 // OSL_DEBUG_LEVEL > 0
if ( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR )
{
GError* error;
gchar* error_debug;
gst_message_parse_error( message, &error, &error_debug );
- OSL_TRACE("gstreamer error: '%s' debug: '%s'", error->message, error_debug);
+ fprintf(stderr, "gstreamer error: '%s' debug: '%s'", error->message, error_debug);
}
#endif
- if (gst_message_has_name (message, "prepare-xwindow-id") && mnWindowID != 0 )
+#ifdef AVMEDIA_GST_0_10
+ if (message->structure &&
+ !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) && mnWindowID != 0 )
+#else
+ if (gst_message_has_name (message, "prepare-window-handle") && mnWindowID != 0 )
+#endif
{
+ DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
if( mpXOverlay )
g_object_unref( G_OBJECT ( mpXOverlay ) );
mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
@@ -208,7 +226,8 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
gst_message_parse_state_changed (message, NULL, &newstate, &pendingstate);
- DBG( "%p state change received, new state %d", this, newstate );
+ DBG( "%p state change received, new state %d pending %d", this,
+ (int)newstate, (int)pendingstate );
if( newstate == GST_STATE_PAUSED &&
pendingstate == GST_STATE_VOID_PENDING ) {
@@ -280,7 +299,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
mnWidth = w;
mnHeight = h;
- DBG( "queried size: %d x %d", mnWidth, mnHeight );
+ fprintf (stderr, "queried size: %d x %d", mnWidth, mnHeight );
maSizeCondition.set();
}
@@ -289,6 +308,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
}
#endif
} else if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR ) {
+ fprintf (stderr, "Error !\n");
if( mnWidth == 0 ) {
// an error occurred, set condition so that OOo thread doesn't wait for us
maSizeCondition.set();
@@ -353,7 +373,7 @@ bool Player::create( const ::rtl::OUString& rURL )
// ------------------------------------------------------------------------------
-void SAL_CALL Player::start( )
+void SAL_CALL Player::start()
throw (uno::RuntimeException)
{
// set the pipeline state to READY and run the loop
@@ -366,7 +386,7 @@ void SAL_CALL Player::start( )
// ------------------------------------------------------------------------------
-void SAL_CALL Player::stop( )
+void SAL_CALL Player::stop()
throw (uno::RuntimeException)
{
// set the pipeline in PAUSED STATE
@@ -397,7 +417,7 @@ sal_Bool SAL_CALL Player::isPlaying()
// ------------------------------------------------------------------------------
-double SAL_CALL Player::getDuration( )
+double SAL_CALL Player::getDuration()
throw (uno::RuntimeException)
{
// slideshow checks for non-zero duration, so cheat here
@@ -432,14 +452,13 @@ void SAL_CALL Player::setMediaTime( double fTime )
// ------------------------------------------------------------------------------
-double SAL_CALL Player::getMediaTime( )
+double SAL_CALL Player::getMediaTime()
throw (uno::RuntimeException)
{
double position = 0.0;
if( mpPlaybin ) {
// get current position in the stream
- GstFormat format = GST_FORMAT_TIME;
gint64 gst_position;
if( wrap_element_query_position( mpPlaybin, GST_FORMAT_TIME, &gst_position ) )
position = gst_position / 1E9;
@@ -450,7 +469,7 @@ double SAL_CALL Player::getMediaTime( )
// ------------------------------------------------------------------------------
-double SAL_CALL Player::getRate( )
+double SAL_CALL Player::getRate()
throw (uno::RuntimeException)
{
double rate = 0.0;
@@ -475,7 +494,7 @@ void SAL_CALL Player::setPlaybackLoop( sal_Bool bSet )
// ------------------------------------------------------------------------------
-sal_Bool SAL_CALL Player::isPlaybackLoop( )
+sal_Bool SAL_CALL Player::isPlaybackLoop()
throw (uno::RuntimeException)
{
// TODO check how to do with GST
@@ -506,7 +525,7 @@ void SAL_CALL Player::setMute( sal_Bool bSet )
// ------------------------------------------------------------------------------
-sal_Bool SAL_CALL Player::isMute( )
+sal_Bool SAL_CALL Player::isMute()
throw (uno::RuntimeException)
{
return mbMuted;
@@ -530,7 +549,7 @@ void SAL_CALL Player::setVolumeDB( sal_Int16 nVolumeDB )
// ------------------------------------------------------------------------------
-sal_Int16 SAL_CALL Player::getVolumeDB( )
+sal_Int16 SAL_CALL Player::getVolumeDB()
throw (uno::RuntimeException)
{
sal_Int16 nVolumeDB(0);
@@ -548,7 +567,7 @@ sal_Int16 SAL_CALL Player::getVolumeDB( )
// ------------------------------------------------------------------------------
-awt::Size SAL_CALL Player::getPreferredPlayerWindowSize( )
+awt::Size SAL_CALL Player::getPreferredPlayerWindowSize()
throw (uno::RuntimeException)
{
awt::Size aSize( 0, 0 );
@@ -556,7 +575,7 @@ awt::Size SAL_CALL Player::getPreferredPlayerWindowSize( )
DBG( "%p Player::getPreferredPlayerWindowSize, member %d x %d", this, mnWidth, mnHeight );
TimeValue aTimeout = { 10, 0 };
-#if OSL_DEBUG_LEVEL > 2
+#if 1 // OSL_DEBUG_LEVEL > 2
osl::Condition::Result aResult =
#endif
maSizeCondition.wait( &aTimeout );
@@ -612,7 +631,7 @@ uno::Reference< ::media::XPlayerWindow > SAL_CALL Player::createPlayerWindow( co
// ------------------------------------------------------------------------------
-uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber( )
+uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber()
throw (uno::RuntimeException)
{
uno::Reference< media::XFrameGrabber > xRet;
@@ -622,7 +641,7 @@ uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber( )
// ------------------------------------------------------------------------------
-::rtl::OUString SAL_CALL Player::getImplementationName( )
+::rtl::OUString SAL_CALL Player::getImplementationName()
throw (uno::RuntimeException)
{
return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( AVMEDIA_GST_PLAYER_IMPLEMENTATIONNAME ) );
@@ -638,7 +657,7 @@ sal_Bool SAL_CALL Player::supportsService( const ::rtl::OUString& ServiceName )
// ------------------------------------------------------------------------------
-uno::Sequence< ::rtl::OUString > SAL_CALL Player::getSupportedServiceNames( )
+uno::Sequence< ::rtl::OUString > SAL_CALL Player::getSupportedServiceNames()
throw (uno::RuntimeException)
{
uno::Sequence< ::rtl::OUString > aRet(1);
diff --git a/avmedia/source/gstreamer/gstplayer.hxx b/avmedia/source/gstreamer/gstplayer.hxx
index b5d7d83..65c3e46 100644
--- a/avmedia/source/gstreamer/gstplayer.hxx
+++ b/avmedia/source/gstreamer/gstplayer.hxx
@@ -34,7 +34,7 @@
#include "com/sun/star/media/XPlayer.hdl"
-typedef struct _GstXOverlay GstXOverlay;
+typedef struct _GstVideoOverlay GstVideoOverlay;
namespace avmedia { namespace gstreamer {
@@ -95,7 +95,7 @@ private:
sal_Bool mbInitialized;
long mnWindowID;
- GstXOverlay* mpXOverlay;
+ GstVideoOverlay* mpXOverlay;
gint64 mnDuration;
int mnWidth;
int mnHeight;
diff --git a/avmedia/source/gstreamer/gstuno.cxx b/avmedia/source/gstreamer/gstuno.cxx
index 8095353..affb8eb2 100644
--- a/avmedia/source/gstreamer/gstuno.cxx
+++ b/avmedia/source/gstreamer/gstuno.cxx
@@ -26,6 +26,7 @@
*
************************************************************************/
+#include "mediamisc.hxx"
#include "gstmanager.hxx"
using namespace ::com::sun::star;
@@ -34,6 +35,14 @@ using namespace ::com::sun::star;
// - factory methods -
// -------------------
+#ifdef AVMEDIA_GST_0_10
+# define IMPL_NAME "com.sun.star.comp.media.Manager_GStreamer_0_10"
+# define SERVICE_NAME AVMEDIA_MANAGER_SERVICE_NAME_OLD // "com.sun.star.comp.avmedia.Manager_GStreamer_0_10"
+#else
+# define IMPL_NAME "com.sun.star.comp.media.Manager_GStreamer"
+# define SERVICE_NAME AVMEDIA_MANAGER_SERVICE_NAME // "com.sun.star.comp.avmedia.Manager_GStreamer"
+#endif
+
static uno::Reference< uno::XInterface > SAL_CALL create_MediaPlayer( const uno::Reference< lang::XMultiServiceFactory >& rxFact )
{
return uno::Reference< uno::XInterface >( *new ::avmedia::gstreamer::Manager( rxFact ) );
@@ -44,14 +53,12 @@ extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_C
uno::Reference< lang::XSingleServiceFactory > xFactory;
void* pRet = 0;
- if( rtl_str_compare( pImplName, "com.sun.star.comp.media.Manager_GStreamer" ) == 0 )
+ if( rtl_str_compare( pImplName, IMPL_NAME ) == 0 )
{
- const ::rtl::OUString aServiceName( ::rtl::OUString("com.sun.star.media.Manager_GStreamer" ) );
-
+ const ::rtl::OUString aServiceName( SERVICE_NAME );
xFactory = uno::Reference< lang::XSingleServiceFactory >( ::cppu::createSingleFactory(
reinterpret_cast< lang::XMultiServiceFactory* >( pServiceManager ),
- ::rtl::OUString("com.sun.star.comp.media.Manager_GStreamer" ),
- create_MediaPlayer, uno::Sequence< ::rtl::OUString >( &aServiceName, 1 ) ) );
+ IMPL_NAME, create_MediaPlayer, uno::Sequence< ::rtl::OUString >( &aServiceName, 1 ) ) );
}
if( xFactory.is() )
diff --git a/avmedia/source/inc/mediamisc.hxx b/avmedia/source/inc/mediamisc.hxx
index 8f129bb..f042629 100644
--- a/avmedia/source/inc/mediamisc.hxx
+++ b/avmedia/source/inc/mediamisc.hxx
@@ -30,23 +30,14 @@ class ResMgr;
#define AVMEDIA_RESID( nId ) ResId( nId, * ::avmedia::GetResMgr() )
-#ifdef GSTREAMER
-#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_GStreamer"
-#else
#ifdef WNT
-
#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_DirectX"
-
#else
#ifdef QUARTZ
-
#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_QuickTime"
-
#else
-
+#define AVMEDIA_MANAGER_SERVICE_NAME_OLD "com.sun.star.comp.avmedia.Manager_GStreamer_0_10"
#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_GStreamer"
-
-#endif
#endif
#endif
diff --git a/avmedia/source/viewer/mediawindowbase_impl.cxx b/avmedia/source/viewer/mediawindowbase_impl.cxx
index 79e0bdf..fd2ffba 100644
--- a/avmedia/source/viewer/mediawindowbase_impl.cxx
+++ b/avmedia/source/viewer/mediawindowbase_impl.cxx
@@ -72,10 +72,25 @@ uno::Reference< media::XPlayer > MediaWindowBaseImpl::createPlayer( const ::rtl:
{
try
{
+ uno::Reference< ::com::sun::star::media::XManager > xManager;
- uno::Reference< ::com::sun::star::media::XManager > xManager(
- xFactory->createInstance( ::rtl::OUString( AVMEDIA_MANAGER_SERVICE_NAME ) ),
- uno::UNO_QUERY );
+ try {
+ xManager = uno::Reference< ::com::sun::star::media::XManager >(
+ xFactory->createInstance( AVMEDIA_MANAGER_SERVICE_NAME ),
+ uno::UNO_QUERY );
+ } catch ( const uno::Exception &e ) {
+ }
+
+// a fallback path just for gstreamer which has
+// two significant versions deployed at once ...
+#ifdef AVMEDIA_MANAGER_SERVICE_NAME_OLD
+ if( !xManager.is() )
+ {
+ xManager = uno::Reference< ::com::sun::star::media::XManager >(
+ xFactory->createInstance( AVMEDIA_MANAGER_SERVICE_NAME_OLD ),
+ uno::UNO_QUERY );
+ }
+#endif
if( xManager.is() )
{
diff --git a/config_host.mk.in b/config_host.mk.in
index 4fb80d1..42355cc 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -112,6 +112,7 @@ export ENABLE_GIO=@ENABLE_GIO@
export ENABLE_GNOMEVFS=@ENABLE_GNOMEVFS@
export ENABLE_GRAPHITE=@ENABLE_GRAPHITE@
export ENABLE_GSTREAMER=@ENABLE_GSTREAMER@
+export ENABLE_GSTREAMER_0_10=@ENABLE_GSTREAMER_0_10@
export ENABLE_GTK3=@ENABLE_GTK3@
export ENABLE_GTK=@ENABLE_GTK@
export ENABLE_GTK_PRINT=@ENABLE_GTK_PRINT@
@@ -182,6 +183,8 @@ export GRAPHITE_LIBS=@GRAPHITE_LIBS@
@x_Cygwin@ export GREP=@WIN_GREP@
export GSTREAMER_CFLAGS=@GSTREAMER_CFLAGS@
export GSTREAMER_LIBS=@GSTREAMER_LIBS@
+export GSTREAMER_0_10_CFLAGS=@GSTREAMER_0_10_CFLAGS@
+export GSTREAMER_0_10_LIBS=@GSTREAMER_0_10_LIBS@
export GTHREAD_CFLAGS=@GTHREAD_CFLAGS@
export GTHREAD_LIBS=@GTHREAD_LIBS@
export GTK3_CFLAGS=@GTK3_CFLAGS@
diff --git a/configure.in b/configure.in
index 651963a..46b9892 100644
--- a/configure.in
+++ b/configure.in
@@ -171,6 +171,7 @@ case "$host_os" in
solaris*)
test_gtk=yes
build_gstreamer=yes
+ build_gstreamer_0_10=yes
test_tde=yes
test_kde=yes
test_freetype=yes
@@ -200,6 +201,7 @@ solaris*)
linux-gnu*|k*bsd*-gnu*)
test_gtk=yes
build_gstreamer=yes
+ build_gstreamer_0_10=yes
test_tde=yes
test_kde=yes
test_kde4=yes
@@ -287,6 +289,7 @@ darwin*) # Mac OS X or iOS
freebsd*)
test_gtk=yes
build_gstreamer=yes
+ build_gstreamer_0_10=yes
test_tde=yes
test_kde=yes
test_kde4=yes
@@ -316,6 +319,7 @@ freebsd*)
*netbsd*)
test_gtk=yes
build_gstreamer=yes
+ build_gstreamer_0_10=yes
test_tde=no
test_kde=no
test_kde4=yes
@@ -344,6 +348,7 @@ openbsd*)
dragonfly*)
test_gtk=yes
build_gstreamer=yes
+ build_gstreamer_0_10=yes
test_tde=yes
test_kde=yes
test_kde4=yes
@@ -354,6 +359,7 @@ dragonfly*)
linux-androideabi*)
build_gstreamer=no
+ build_gstreamer_0_10=no
test_cups=no
test_fontconfig=no
test_freetype=no
@@ -855,9 +861,14 @@ AC_ARG_ENABLE(randr-link,
,enable_randr_link=yes)
AC_ARG_ENABLE(gstreamer,
- AS_HELP_STRING([--disable-gstreamer],
+ AS_HELP_STRING([--enable-gstreamer],
+ [Enable building with the new gstreamer 1.0 avmedia backend.]),
+,enable_gstreamer=no)
+
+AC_ARG_ENABLE(gstreamer-0-10,
+ AS_HELP_STRING([--disable-gstreamer-0-10],
[Disable building the gstreamer avmedia backend.]),
-,enable_gstreamer=yes)
+,enable_gstreamer_0_10=yes)
AC_ARG_ENABLE(neon,
AS_HELP_STRING([--disable-neon],
@@ -3703,6 +3714,7 @@ if test "$enable_headless" = "yes"; then
test_fontconfig=yes
test_gtk=no
build_gstreamer=no
+ build_gstreamer_0_10=no
test_tde=no
test_kde=no
test_kde4=no
@@ -8936,20 +8948,39 @@ dnl ===================================================================
ENABLE_GSTREAMER=""
-if test "$build_gstreamer" = "yes"; then
+if test "$build_gstreamer" = "yes"; then
AC_MSG_CHECKING([whether to enable the GStreamer avmedia backend])
if test "x$enable_gstreamer" != "xno"; then
ENABLE_GSTREAMER="TRUE"
AC_MSG_RESULT([yes])
- PKG_CHECK_MODULES( GSTREAMER, gstreamer-0.10 gstreamer-plugins-base-0.10 )
+ PKG_CHECK_MODULES( GSTREAMER, gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-video-1.0 )
else
AC_MSG_RESULT([no])
fi
fi
-
+AC_SUBST(GSTREAMER_CFLAGS)
+AC_SUBST(GSTREAMER_LIBS)
AC_SUBST(ENABLE_GSTREAMER)
+
+ENABLE_GSTREAMER_0_10=""
+if test "$build_gstreamer_0_10" = "yes"; then
+
+ AC_MSG_CHECKING([whether to enable the GStreamer avmedia backend])
+ if test "x$enable_gstreamer_0_10" != "xno"; then
+ ENABLE_GSTREAMER_0_10="TRUE"
+ AC_MSG_RESULT([yes])
+ PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 )
+ else
+ AC_MSG_RESULT([no])
+ fi
+fi
+
+AC_SUBST(GSTREAMER_0_10_CFLAGS)
+AC_SUBST(GSTREAMER_0_10_LIBS)
+AC_SUBST(ENABLE_GSTREAMER_0_10)
+
dnl ===================================================================
dnl Check whether the OpenGL libraries are available
dnl ===================================================================
diff --git a/distro-configs/LibreOfficeAndroid.conf b/distro-configs/LibreOfficeAndroid.conf
index d789052..8acf153 100644
--- a/distro-configs/LibreOfficeAndroid.conf
+++ b/distro-configs/LibreOfficeAndroid.conf
@@ -6,6 +6,7 @@
--disable-ext-report-builder
--disable-gconf
--disable-gnome-vfs
+--disable-gstreamer-0-10
--disable-gstreamer
--disable-lockdown
--disable-mozilla
diff --git a/distro-configs/LibreOfficeLinux.conf b/distro-configs/LibreOfficeLinux.conf
index 21342e4..8e0ff3e 100644
--- a/distro-configs/LibreOfficeLinux.conf
+++ b/distro-configs/LibreOfficeLinux.conf
@@ -26,7 +26,7 @@
--enable-odk
--enable-lockdown
--enable-kde
---enable-gstreamer
+--enable-gstreamer-0-10
--enable-evolution2
--enable-gnome-vfs
--enable-ext-wiki-publisher
diff --git a/distro-configs/LibreOfficeOpenBSD.conf b/distro-configs/LibreOfficeOpenBSD.conf
index f55550a..b03a03f 100644
--- a/distro-configs/LibreOfficeOpenBSD.conf
+++ b/distro-configs/LibreOfficeOpenBSD.conf
@@ -11,7 +11,7 @@
--disable-randr-link
--disable-unix-qstart-libpng
--enable-binfilter
---enable-gstreamer
+--enable-gstreamer-0-10
--enable-lockdown
--enable-ext-presenter-minimizer
--enable-ext-pdfimport
diff --git a/distro-configs/LibreOfficeiOS.conf b/distro-configs/LibreOfficeiOS.conf
index 705cb63..67afb67 100644
--- a/distro-configs/LibreOfficeiOS.conf
+++ b/distro-configs/LibreOfficeiOS.conf
@@ -7,6 +7,7 @@
--disable-extension-integration
--disable-gconf
--disable-gnome-vfs
+--disable-gstreamer-0-10
--disable-gstreamer
--disable-librsvg
--disable-lockdown
diff --git a/distro-configs/OxygenOfficeLinux.conf b/distro-configs/OxygenOfficeLinux.conf
index a9203f2..62cd1d6 100644
--- a/distro-configs/OxygenOfficeLinux.conf
+++ b/distro-configs/OxygenOfficeLinux.conf
@@ -73,7 +73,7 @@
--without-junit
--with-helppack-integration
--enable-odk
---enable-gstreamer
+--enable-gstreamer-0-10
--enable-graphite
--enable-dependency-tracking
--enable-python=internal
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
index 09e296b..572d9c2 100644
--- a/postprocess/packcomponents/makefile.mk
+++ b/postprocess/packcomponents/makefile.mk
@@ -403,6 +403,10 @@ my_components += component/connectivity/source/drivers/evoab2/evoab
my_components += component/avmedia/source/gstreamer/avmediagstreamer
.END
+.IF "$(OS)" != "WNT" && "$(ENABLE_GSTREAMER_0_10)" != ""
+my_components += component/avmedia/source/gstreamer/avmediagstreamer_0_10
+.END
+
.INCLUDE: target.mk
ALLTAR : $(MISC)/services.rdb
diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk
index 0c49414..b6b2a0e 100644
--- a/scp2/InstallModule_ooo.mk
+++ b/scp2/InstallModule_ooo.mk
@@ -152,6 +152,9 @@ $(eval $(call gb_InstallModule_add_defs,scp2/ooo,\
$(if $(filter TRUE,$(ENABLE_GSTREAMER)),\
-DGSTREAMER \
) \
+ $(if $(filter TRUE,$(ENABLE_GSTREAMER_0_10)),\
+ -DGSTREAMER_0_10 \
+ ) \
$(if $(WINDOWS_SDK_HOME),\
-DHAVE_WINDOWS_SDK \
) \
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
index 66c50e2..40466b3 100644
--- a/scp2/source/ooo/file_library_ooo.scp
+++ b/scp2/source/ooo/file_library_ooo.scp
@@ -1415,7 +1415,11 @@ STD_LIB_FILE( gid_File_Lib_AVMedia, avmedia )
#ifdef GSTREAMER
SPECIAL_LIB_FILE_PATCH( gid_File_Lib_AVMediaGStreamer, avmediagst )
-#elif defined WNT
+#endif
+#ifdef GSTREAMER_0_10
+SPECIAL_LIB_FILE_PATCH( gid_File_Lib_AVMediaGStreamer_0_10, avmediagst_0_10 )
+#endif
+#if defined WNT
#ifdef ENABLE_DIRECTX
SPECIAL_LIB_FILE( gid_File_Lib_AVMediaWin, avmediawin )
#endif
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 76e062b..ef4c59b 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -203,15 +203,15 @@ Module gid_Module_Root_Files_4
gid_File_Lib_Charttools,
gid_File_Lib_Ctl,
gid_File_Lib_Cui,
- gid_File_Lib_Sdbt,
- gid_File_Lib_Dbmm,
+ gid_File_Lib_Sdbt,
+ gid_File_Lib_Dbmm,
gid_File_Lib_Dba,
gid_File_Lib_Dbase2,
gid_File_Lib_Dbaxml,
gid_File_Lib_Dbt,
gid_File_Lib_Dbfile,
gid_File_Lib_Drawinglayer,
- gid_File_Lib_Editeng,
+ gid_File_Lib_Editeng,
gid_File_Lib_Flat,
gid_File_Lib_For,
gid_File_Lib_Forui,
@@ -250,15 +250,16 @@ Module gid_Module_Root_Files_4
gid_File_Lib_Svx,
gid_File_Lib_AVMedia,
gid_File_Lib_AVMediaWin,
- gid_File_Lib_AVMediaGStreamer,
+ gid_File_Lib_AVMediaGStreamer,
+ gid_File_Lib_AVMediaGStreamer_0_10,
gid_File_Lib_BaseGfx,
- gid_File_Lib_Merged,
+ gid_File_Lib_Merged,
gid_File_Lib_Sysdtrans,
gid_File_Lib_Sw,
gid_File_Lib_TextConversionDlgs,
gid_File_Lib_Tk,
- gid_File_Lib_Acc,
- gid_File_Lib_BaseBmp,
+ gid_File_Lib_Acc,
+ gid_File_Lib_BaseBmp,
gid_File_Lib_Tools,
gid_File_Lib_Utl,
gid_File_Lib_Uui,
@@ -284,8 +285,8 @@ Module gid_Module_Root_Files_4
gid_File_Lib_Fwm,
gid_File_Lib_Lprx2,
gid_File_Lib_Lprxw,
- gid_File_Lib_Libtextcat,
- gid_File_Lib_Guesslang,
+ gid_File_Lib_Libtextcat,
+ gid_File_Lib_Guesslang,
gid_File_Lib_Tfu);
End
diff --git a/svx/source/sdr/contact/viewcontact.cxx b/svx/source/sdr/contact/viewcontact.cxx
index 3f1f986..b4dec00 100644
--- a/svx/source/sdr/contact/viewcontact.cxx
+++ b/svx/source/sdr/contact/viewcontact.cxx
@@ -269,7 +269,7 @@ namespace sdr
drawinglayer::primitive2d::Primitive2DSequence ViewContact::createViewIndependentPrimitive2DSequence() const
{
- // This is the default impelemtation and should never be called (see header). If this is called,
+ // This is the default implementation and should never be called (see header). If this is called,
// someone implemented a ViewContact (VC) visualisation object without defining the visualisation by
// providing a seqence of primitives -> which cannot be correct.
// Since we have no access to any known model data here, the default implementation creates a yellow placeholder
--
1.7.11.4

@ -1,730 +0,0 @@
From f05438dda954965651f332b2f7ee97dbdd951b98 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Thu, 20 Sep 2012 10:28:56 +0200
Subject: [PATCH 2/4] rework selection of transformer for an XSLT filter
(cherry picked from commit ca0ea73a4ab104031a16b5bac7a9bb6e57c77ba0)
Conflicts:
filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
Change-Id: I765762f11813c6b612416a8db2707bf94114c876
---
filter/source/xsltdialog/typedetectionexport.cxx | 2 +-
filter/source/xsltdialog/typedetectionimport.cxx | 2 +-
filter/source/xsltdialog/xmlfiltercommon.hxx | 2 +-
filter/source/xsltdialog/xmlfilterhelpids.hrc | 3 +-
.../source/xsltdialog/xmlfiltersettingsdialog.cxx | 19 ++----
filter/source/xsltdialog/xmlfiltertabpagexslt.cxx | 20 ++-----
filter/source/xsltdialog/xmlfiltertabpagexslt.hrc | 5 +-
filter/source/xsltdialog/xmlfiltertabpagexslt.hxx | 5 +-
filter/source/xsltdialog/xmlfiltertabpagexslt.src | 23 +++----
filter/source/xsltfilter/LibXSLTTransformer.cxx | 4 +-
filter/source/xsltfilter/LibXSLTTransformer.hxx | 18 +++---
filter/source/xsltfilter/XSLTFilter.cxx | 70 +++++++++++++++-------
.../sun/star/comp/xsltfilter/XSLTransformer.java | 13 ++--
filter/source/xsltfilter/components.rdb | 4 +-
filter/source/xsltfilter/xsltfilter.component | 2 +-
offapi/UnoApi_offapi.mk | 9 +++
offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl | 30 ++++++++++
offapi/com/sun/star/xml/xslt/XSLTTransformer.idl | 32 ++++++++++
offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl | 36 +++++++++++
19 files changed, 204 insertions(+), 95 deletions(-)
create mode 100644 offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
create mode 100644 offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
create mode 100644 offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
diff --git a/filter/source/xsltdialog/typedetectionexport.cxx b/filter/source/xsltdialog/typedetectionexport.cxx
index a01b462..83bf7fa 100644
--- a/filter/source/xsltdialog/typedetectionexport.cxx
+++ b/filter/source/xsltdialog/typedetectionexport.cxx
@@ -192,7 +192,7 @@ void TypeDetectionExporter::doExport( Reference< XOutputStream > xOS, const XML
sValue += sComma;
sValue += sXSLTFilterService;
sValue += sDelim;
- sValue += pFilter->maXSLTTransformerImpl;
+ sValue += OUString::valueOf( pFilter->mbNeedsXSLT2 );
sValue += sDelim;
const application_info_impl* pAppInfo = getApplicationInfo( pFilter->maExportService );
diff --git a/filter/source/xsltdialog/typedetectionimport.cxx b/filter/source/xsltdialog/typedetectionimport.cxx
index 3d3b937..50428e7 100644
--- a/filter/source/xsltdialog/typedetectionimport.cxx
+++ b/filter/source/xsltdialog/typedetectionimport.cxx
@@ -180,7 +180,7 @@ filter_info_impl* TypeDetectionImporter::createFilterForNode( Node * pNode )
OUString aAdapterService( getSubdata( 0, aDelim, aFilterUserData ) );
//Import/ExportService
- pFilter->maXSLTTransformerImpl = getSubdata( 1, aDelim, aFilterUserData );
+ pFilter->mbNeedsXSLT2 = getSubdata( 1, aDelim, aFilterUserData ).toBoolean();
pFilter->maImportService = getSubdata( 2, aDelim, aFilterUserData );
pFilter->maExportService = getSubdata( 3, aDelim, aFilterUserData );
pFilter->maImportXSLT = getSubdata( 4, aDelim, aFilterUserData );
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hxx b/filter/source/xsltdialog/xmlfiltercommon.hxx
index cdb767e..41be2c7 100644
--- a/filter/source/xsltdialog/xmlfiltercommon.hxx
+++ b/filter/source/xsltdialog/xmlfiltercommon.hxx
@@ -77,7 +77,7 @@ public:
sal_Bool mbReadonly;
- rtl::OUString maXSLTTransformerImpl;
+ sal_Bool mbNeedsXSLT2;
filter_info_impl();
filter_info_impl( const filter_info_impl& rInfo );
diff --git a/filter/source/xsltdialog/xmlfilterhelpids.hrc b/filter/source/xsltdialog/xmlfilterhelpids.hrc
index 558a274..a22fa52 100644
--- a/filter/source/xsltdialog/xmlfilterhelpids.hrc
+++ b/filter/source/xsltdialog/xmlfilterhelpids.hrc
@@ -50,8 +50,7 @@
#define HID_XML_FILTER_DOCTYPE "FILTER_HID_XML_FILTER_DOCTYPE"
#define HID_XML_FILTER_DTD "FILTER_HID_XML_FILTER_DTD"
#define HID_XML_FILTER_DTD_BROWSE "FILTER_HID_XML_FILTER_DTD_BROWSE"
-#define HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J "FILTER_HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J"
-#define HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT "FILTER_HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT"
+#define HID_XML_FILTER_NEEDS_XSLT2 "FILTER_HID_XML_FILTER_NEEDS_XSLT2"
#define HID_XML_FILTER_EXPORT_XSLT "FILTER_HID_XML_FILTER_EXPORT_XSLT"
#define HID_XML_FILTER_EXPORT_XSLT_BROWSE "FILTER_HID_XML_FILTER_EXPORT_XSLT_BROWSE"
#define HID_XML_FILTER_IMPORT_XSLT "FILTER_HID_XML_FILTER_IMPORT_XSLT"
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index 558ac0d..a54b520 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -1164,7 +1164,7 @@ void XMLFilterSettingsDialog::initFilterList()
continue;
// get filter information from userdata
- pTempFilter->maXSLTTransformerImpl = aUserData[1];
+ pTempFilter->mbNeedsXSLT2 = aUserData[1].toBoolean();
pTempFilter->maImportService = aUserData[2];
pTempFilter->maExportService = aUserData[3];
pTempFilter->maImportXSLT = aUserData[4];
@@ -1590,7 +1590,8 @@ filter_info_impl::filter_info_impl()
: maFlags(0x00080040),
maFileFormatVersion(0),
mnDocumentIconID(0),
- mbReadonly(sal_False)
+ mbReadonly(sal_False),
+ mbNeedsXSLT2(sal_False)
{
}
@@ -1615,7 +1616,7 @@ filter_info_impl::filter_info_impl( const filter_info_impl& rInfo ) :
maFileFormatVersion( rInfo.maFileFormatVersion ),
mnDocumentIconID( rInfo.mnDocumentIconID ),
mbReadonly( rInfo.mbReadonly ),
- maXSLTTransformerImpl( rInfo.maXSLTTransformerImpl )
+ mbNeedsXSLT2( rInfo.mbNeedsXSLT2 )
{
}
@@ -1639,7 +1640,7 @@ int filter_info_impl::operator==( const filter_info_impl& r ) const
maImportTemplate != r.maImportTemplate ||
maFlags != r.maFlags ||
maFileFormatVersion != r.maFileFormatVersion ||
- maXSLTTransformerImpl != r.maXSLTTransformerImpl
+ mbNeedsXSLT2 != r.mbNeedsXSLT2
)
return false;
@@ -1653,15 +1654,7 @@ Sequence< OUString > filter_info_impl::getFilterUserData() const
Sequence< OUString > aUserData(8);
aUserData[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.documentconversion.XSLTFilter" ) );
- /*
- const application_info_impl* pInfo = getApplicationInfo( maDocumentService );
- if( pInfo )
- {
- aUserData[2] = pInfo->maXMLImporter;
- aUserData[3] = pInfo->maXMLExporter;
- }
- */
- aUserData[1] = maXSLTTransformerImpl;
+ aUserData[1] = OUString::valueOf( mbNeedsXSLT2 );
aUserData[2] = maImportService;
aUserData[3] = maExportService;
aUserData[4] = maImportXSLT;
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
index dc1a4c8..b4cae16 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
@@ -68,9 +68,8 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co
maEDImportTemplate( this, ResId( ED_XML_IMPORT_TEMPLATE, rResMgr ), INET_PROT_FILE ),
maPBImportTemplate( this, ResId( PB_XML_IMPORT_TEMPLATE_BROWSE, rResMgr ) ),
- maFTTransformationService( this, ResId (FT_XML_TRANSFORM_SERVICE, rResMgr ) ),
- maRBTransformationServiceLibXSLT( this, ResId (RB_XML_TRANSFORM_SERVICE_LIBXSLT, rResMgr ) ),
- maRBTransformationServiceSaxonJ( this, ResId (RB_XML_TRANSFORM_SERVICE_SAXON_J, rResMgr ) ),
+ maFTNeedsXSLT2( this, ResId (FT_XML_NEEDS_XSLT2, rResMgr ) ),
+ maCBNeedsXSLT2( this, ResId (CB_XML_NEEDS_XSLT2, rResMgr ) ),
sHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "http://" ) ),
sSHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "shttp://" ) ),
@@ -100,8 +99,7 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co
maEDExportXSLT.SetHelpId( HID_XML_FILTER_EXPORT_XSLT );
maEDImportXSLT.SetHelpId( HID_XML_FILTER_IMPORT_XSLT );
maEDImportTemplate.SetHelpId( HID_XML_FILTER_IMPORT_TEMPLATE );
- maRBTransformationServiceLibXSLT.SetHelpId( HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT );
- maRBTransformationServiceSaxonJ.SetHelpId( HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J );
+ maCBNeedsXSLT2.SetHelpId( HID_XML_FILTER_NEEDS_XSLT2 );
}
XMLFilterTabPageXSLT::~XMLFilterTabPageXSLT()
@@ -117,10 +115,7 @@ bool XMLFilterTabPageXSLT::FillInfo( filter_info_impl* pInfo )
pInfo->maExportXSLT = GetURL( maEDExportXSLT );
pInfo->maImportXSLT = GetURL( maEDImportXSLT );
pInfo->maImportTemplate = GetURL( maEDImportTemplate );
- pInfo->maXSLTTransformerImpl
- = maRBTransformationServiceSaxonJ.IsChecked() ? OUString(
- RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.JAXTHelper" ))
- : OUString(RTL_CONSTASCII_USTRINGPARAM( "" ));
+ pInfo->mbNeedsXSLT2 = maCBNeedsXSLT2.IsChecked();
}
return true;
@@ -136,12 +131,7 @@ void XMLFilterTabPageXSLT::SetInfo(const filter_info_impl* pInfo)
SetURL( maEDExportXSLT, pInfo->maExportXSLT );
SetURL( maEDImportXSLT, pInfo->maImportXSLT );
SetURL( maEDImportTemplate, pInfo->maImportTemplate );
- if (pInfo->maXSLTTransformerImpl.equals(OUString(
- RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.JAXTHelper" )))) {
- maRBTransformationServiceSaxonJ.Check();
- } else {
- maRBTransformationServiceLibXSLT.Check();
- }
+ maCBNeedsXSLT2.Check( pInfo->mbNeedsXSLT2 );
}
}
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
index 12a9d46..bdd39e7 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
@@ -44,8 +44,7 @@
#define FT_XML_IMPORT_TEMPLATE 12
#define ED_XML_IMPORT_TEMPLATE 13
#define PB_XML_IMPORT_TEMPLATE_BROWSE 14
-#define FT_XML_TRANSFORM_SERVICE 15
-#define RB_XML_TRANSFORM_SERVICE_LIBXSLT 16
-#define RB_XML_TRANSFORM_SERVICE_SAXON_J 17
+#define FT_XML_NEEDS_XSLT2 15
+#define CB_XML_NEEDS_XSLT2 16
#endif
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
index a9d8062..a0375b7 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
@@ -69,9 +69,8 @@ public:
SvtURLBox maEDImportTemplate;
PushButton maPBImportTemplate;
- FixedText maFTTransformationService;
- RadioButton maRBTransformationServiceLibXSLT;
- RadioButton maRBTransformationServiceSaxonJ;
+ FixedText maFTNeedsXSLT2;
+ CheckBox maCBNeedsXSLT2;
private:
void SetURL( SvtURLBox& rURLBox, const rtl::OUString& rURL );
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.src b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
index 2d0391c..96b83f7 100644
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.src
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
@@ -175,27 +175,18 @@ TabPage RID_XML_FILTER_TABPAGE_XSLT
// XSLT transformation service --------------------------------------------------------
- FixedText FT_XML_TRANSFORM_SERVICE
+ CheckBox CB_XML_NEEDS_XSLT2
{
+ HelpID = HID_XML_FILTER_NEEDS_XSLT2;
Pos = MAP_APPFONT ( FIRST_ROW_X , FIRST_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + FIXED_TEXT_OFFSET + EDIT_OFFSET ) ;
- Size = MAP_APPFONT ( FIRST_ROW_WIDTH , 8 ) ;
- Text [ en-US ] = "XSLT Transformation Service";
- };
-
- RadioButton RB_XML_TRANSFORM_SERVICE_LIBXSLT
- {
- HelpID = HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT;
- Pos = MAP_APPFONT ( SECOND_ROW_X , SECOND_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + EDIT_OFFSET ) ;
- Size = MAP_APPFONT ( SECOND_ROW_WIDTH - SPACING - BROWSE_WIDTH, 12 ) ;
- Text[ en-US ] = "~Builtin (LibXSLT)";
+ Size = MAP_APPFONT ( 12, 12 ) ;
};
- RadioButton RB_XML_TRANSFORM_SERVICE_SAXON_J
+ FixedText FT_XML_NEEDS_XSLT2
{
- HelpID = HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J;
- Pos = MAP_APPFONT ( SECOND_ROW_X , SECOND_ROW_Y + 6 * ROW_HEIGHT + 6 * SPACING + EDIT_OFFSET ) ;
- Size = MAP_APPFONT ( SECOND_ROW_WIDTH - SPACING - BROWSE_WIDTH, 12 ) ;
- Text[ en-US ] = "~Saxon/J";
+ Pos = MAP_APPFONT ( FIRST_ROW_X + 3 * SPACING , SECOND_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + FIXED_TEXT_OFFSET + EDIT_OFFSET ) ;
+ Size = MAP_APPFONT ( 2 * FIRST_ROW_WIDTH , 8 ) ; // guess width
+ Text [ en-US ] = "The filter needs XSLT 2.0 processor";
};
};
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
index ff57fc1..ab03316 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.cxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx
@@ -488,9 +488,11 @@ namespace XSLT
}
void
- LibXSLTTransformer::initialize(const Sequence<Any>& params)
+ LibXSLTTransformer::initialize(const Sequence<Any>& args)
throw (RuntimeException)
{
+ Sequence<Any> params;
+ args[0] >>= params;
xmlSubstituteEntitiesDefault(0);
m_parameters.clear();
for (int i = 0; i < params.getLength(); i++)
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.hxx b/filter/source/xsltfilter/LibXSLTTransformer.hxx
index 444cb2f..a7c71a6 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.hxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.hxx
@@ -42,7 +42,7 @@
#include <cppuhelper/factory.hxx>
#include <cppuhelper/servicefactory.hxx>
-#include <cppuhelper/implbase4.hxx>
+#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase.hxx>
#include <rtl/ref.hxx>
@@ -51,14 +51,12 @@
#include <com/sun/star/uno/Any.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
-#include <com/sun/star/io/XActiveDataSource.hpp>
-#include <com/sun/star/io/XActiveDataSink.hpp>
-#include <com/sun/star/io/XActiveDataControl.hpp>
#include <com/sun/star/io/XStreamListener.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/xml/xslt/XXSLTTransformer.hpp>
using namespace ::rtl;
using namespace ::cppu;
@@ -66,7 +64,6 @@ using namespace ::osl;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::io;
using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
using ::std::list;
using ::std::map;
@@ -90,8 +87,7 @@ namespace XSLT
*
* See Reader below.
*/
- class LibXSLTTransformer : public WeakImplHelper4<XActiveDataSink,
- XActiveDataSource, XActiveDataControl, XInitialization>
+ class LibXSLTTransformer : public WeakImplHelper1<com::sun::star::xml::xslt::XXSLTTransformer>
{
private:
static const char* const PARAM_SOURCE_URL;
@@ -102,7 +98,7 @@ namespace XSLT
static const char* const PARAM_DOCTYPE_PUBLIC;
// the UNO ServiceFactory
- com::sun::star::uno::Reference<XMultiServiceFactory> m_rServiceFactory;
+ com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> m_rServiceFactory;
com::sun::star::uno::Reference<XInputStream> m_rInputStream;
@@ -129,7 +125,7 @@ namespace XSLT
public:
// ctor...
- LibXSLTTransformer(const com::sun::star::uno::Reference<XMultiServiceFactory> &r);
+ LibXSLTTransformer(const com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> &r);
// XActiveDataSink
virtual void SAL_CALL
@@ -169,7 +165,7 @@ namespace XSLT
::std::map<const char*, OString> SAL_CALL
getParameters();
- virtual com::sun::star::uno::Reference<XMultiServiceFactory> SAL_CALL
+ virtual com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> SAL_CALL
getServiceFactory() {
return m_rServiceFactory;
}
diff --git a/filter/source/xsltfilter/XSLTFilter.cxx b/filter/source/xsltfilter/XSLTFilter.cxx
index f3ebd2f..36968e7 100644
--- a/filter/source/xsltfilter/XSLTFilter.cxx
+++ b/filter/source/xsltfilter/XSLTFilter.cxx
@@ -41,6 +41,7 @@
#include <rtl/strbuf.hxx>
#include <tools/urlobj.hxx>
+#include <comphelper/componentcontext.hxx>
#include <comphelper/interaction.hxx>
#include <com/sun/star/lang/XComponent.hpp>
@@ -72,6 +73,8 @@
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/task/XInteractionRequest.hpp>
#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
+#include <com/sun/star/xml/xslt/XSLT2Transformer.hpp>
+#include <com/sun/star/xml/xslt/XSLTTransformer.hpp>
#include <xmloff/attrlist.hxx>
@@ -102,14 +105,10 @@ namespace XSLT
* them to an XSLT transformation service. XSLT transformation errors are
* reported to XSLTFilter.
*
- * Currently, two implementations for the XSLT transformation service exist:
- * a java based service (see XSLTransformer.java) and a libxslt based
- * service (LibXSLTTransformer.cxx).
- *
- * The libxslt implementation will be used by default.
- *
- * If the value of the 2nd "UserData" parameter of the filter configuration is
- * not empty, the service name given there will be used.
+ * Currently, our transformation service is libxslt based, so it
+ * only supports XSLT 1.0. There is a possibility to use XSLT 2.0
+ * supporting service from an extension for a specific filter; the
+ * service must support com.sun.star.xml.xslt.XSLT2Transformer.
*/
class XSLTFilter : public WeakImplHelper4<XImportFilter, XExportFilter,
XStreamListener, ExtendedDocumentHandlerAdapter>
@@ -122,7 +121,7 @@ namespace XSLT
// DocumentHandler interface of the css::xml::sax::Writer service
css::uno::Reference<XOutputStream> m_rOutputStream;
- css::uno::Reference<XActiveDataControl> m_tcontrol;
+ css::uno::Reference<xslt::XXSLTTransformer> m_tcontrol;
oslCondition m_cTransformed;
sal_Bool m_bTerminated;
@@ -135,6 +134,8 @@ namespace XSLT
OUString
expandUrl(const OUString&);
+ css::uno::Reference<xslt::XXSLTTransformer> impl_createTransformer(const rtl::OUString& rTransformer, const Sequence<Any>& rArgs);
+
public:
// ctor...
@@ -211,6 +212,43 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
return sExpandedUrl;
}
+ css::uno::Reference<xslt::XXSLTTransformer>
+ XSLTFilter::impl_createTransformer(const rtl::OUString& rTransformer, const Sequence<Any>& rArgs)
+ {
+ css::uno::Reference<xslt::XXSLTTransformer> xTransformer;
+
+ // check if the filter needs XSLT-2.0-capable transformer
+ // COMPATIBILITY: libreoffice 3.5/3.6 used to save the impl.
+ // name of the XSLT 2.0 transformation service there, so check
+ // for that too (it is sufficient to check that there is _a_
+ // service name there)
+ if (rTransformer.toBoolean() || rTransformer.match("com.sun."))
+ {
+ try
+ {
+ xTransformer = xslt::XSLT2Transformer::create(
+ comphelper::ComponentContext(m_rServiceFactory).getUNOContext(), rArgs);
+ }
+ catch (const Exception&)
+ {
+ // TODO: put a dialog telling about the need to install
+ // xslt2-transformer extension here
+ SAL_WARN("filter.xslt", "could not create XSLT 2.0 transformer");
+ throw;
+ }
+ }
+
+ // instantiation of XSLT 2.0 transformer service failed, or the
+ // filter does not need it
+ if (!xTransformer.is())
+ {
+ xTransformer = xslt::XSLTTransformer::create(
+ comphelper::ComponentContext(m_rServiceFactory).getUNOContext(), rArgs);
+ }
+
+ return xTransformer;
+ }
+
void
XSLTFilter::started() throw (RuntimeException)
{
@@ -322,11 +360,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
nv.Value <<= OUString(INetURLObject(aURL).getBase());
args[2] <<= nv;
- OUString serviceName("com.sun.star.comp.documentconversion.LibXSLTTransformer");
- if (!msUserData[1].isEmpty())
- serviceName = msUserData[1];
-
- m_tcontrol = css::uno::Reference<XActiveDataControl> (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY);
+ m_tcontrol = impl_createTransformer(msUserData[1], args);
OSL_ASSERT(xHandler.is());
OSL_ASSERT(xInputStream.is());
@@ -486,11 +520,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
nv.Value <<= m_aExportBaseUrl;
args[3] <<= nv;
- OUString serviceName("com.sun.star.comp.documentconversion.LibXSLTTransformer");
- if (!msUserData[1].isEmpty())
- serviceName = msUserData[1];
-
- m_tcontrol = css::uno::Reference<XActiveDataControl> (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY);
+ m_tcontrol = impl_createTransformer(msUserData[1], args);
OSL_ASSERT(m_rOutputStream.is());
OSL_ASSERT(m_tcontrol.is());
@@ -566,7 +596,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
// --------------------------------------
#define FILTER_SERVICE_NAME "com.sun.star.documentconversion.XSLTFilter"
#define FILTER_IMPL_NAME "com.sun.star.comp.documentconversion.XSLTFilter"
-#define TRANSFORMER_SERVICE_NAME "com.sun.star.documentconversion.LibXSLTTransformer"
+#define TRANSFORMER_SERVICE_NAME "com.sun.star.xml.xslt.XSLTTransformer"
#define TRANSFORMER_IMPL_NAME "com.sun.star.comp.documentconversion.LibXSLTTransformer"
static css::uno::Reference<XInterface> SAL_CALL
diff --git a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
index 1a6d8cf..7036646 100644
--- a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
+++ b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
@@ -75,6 +75,7 @@ import com.sun.star.registry.XRegistryKey;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
+import com.sun.star.xml.xslt.XXSLTTransformer;
//Uno to java Adaptor
import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter;
@@ -88,8 +89,8 @@ import net.sf.saxon.FeatureKeys;
* component on demand (__getServiceFactory()).
*/
public class XSLTransformer
- implements XTypeProvider, XServiceName, XServiceInfo, XActiveDataSink,
- XActiveDataSource, XActiveDataControl, XInitialization, URIResolver, EntityResolver {
+ implements XTypeProvider, XServiceName, XServiceInfo, XXSLTTransformer,
+ URIResolver, EntityResolver {
/**
* This component provides java based XSL transformations
@@ -132,7 +133,7 @@ public class XSLTransformer
svcfactory = msf;
}
- public void initialize(Object[] values) throws com.sun.star.uno.Exception {
+ public void initialize(Object[] args) throws com.sun.star.uno.Exception {
// some configurable debugging
String statsfilepath = null;
if ((statsfilepath = System.getProperty(STATSPROP)) != null) {
@@ -146,6 +147,8 @@ public class XSLTransformer
}
}
+ Object[] values = (Object[]) args[0];
+
// reading the values
NamedValue nv = null;
debug("The transformation's parameters as 'name = value' pairs:\n");
@@ -444,7 +447,7 @@ public class XSLTransformer
}
}
} // --- component management interfaces... ---
- private final static String _serviceName = "com.sun.star.comp.JAXTHelper";
+ private final static String _serviceName = "com.sun.star.xml.xslt.XSLT2Transformer";
// Implement methods from interface XTypeProvider
public byte[] getImplementationId() {
@@ -494,7 +497,7 @@ public class XSLTransformer
public static XSingleServiceFactory __getServiceFactory(
String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) {
XSingleServiceFactory xSingleServiceFactory = null;
- if (implName.indexOf("XSLTransformer") != -1) {
+ if (implName.equals(XSLTransformer.class.getName())) {
xSingleServiceFactory = FactoryHelper.getServiceFactory(XSLTransformer.class,
_serviceName, multiFactory, regKey);
}
diff --git a/filter/source/xsltfilter/components.rdb b/filter/source/xsltfilter/components.rdb
index 080cb7a..6014b82 100644
--- a/filter/source/xsltfilter/components.rdb
+++ b/filter/source/xsltfilter/components.rdb
@@ -1,8 +1,8 @@
<?xml version="1.0"?>
<components xmlns="http://openoffice.org/2010/uno-components">
<component loader="com.sun.star.loader.Java2" uri="./XSLTFilter.jar">
- <implementation name="XSLTransformer">
- <service name="com.sun.star.comp.JAXTHelper"/>
+ <implementation name="com.sun.star.comp.xsltfilter.XSLTransformer">
+ <service name="com.sun.star.xml.xslt.XSLT2Transformer"/>
</implementation>
</component>
</components>
diff --git a/filter/source/xsltfilter/xsltfilter.component b/filter/source/xsltfilter/xsltfilter.component
index 5fb985c..296f2bc 100644
--- a/filter/source/xsltfilter/xsltfilter.component
+++ b/filter/source/xsltfilter/xsltfilter.component
@@ -32,6 +32,6 @@
<service name="com.sun.star.documentconversion.XSLTFilter"/>
</implementation>
<implementation name="com.sun.star.comp.documentconversion.LibXSLTTransformer">
- <service name="com.sun.star.documentconversion.LibXSLTTransformer"/>
+ <service name="com.sun.star.xml.xslt.XSLTTransformer"/>
</implementation>
</component>
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index 98cca5f..007cc52 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -285,6 +285,10 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/xml/sax,\
FastShapeContextHandler \
FastTokenHandler \
))
+$(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/xml/xslt,\
+ XSLTTransformer \
+ XSLT2Transformer \
+))
$(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star,\
@@ -4255,6 +4259,11 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xml/xpath,\
XXPathExtension \
XXPathObject \
))
+
+$(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xml/xslt,\
+ XXSLTTransformer \
+))
+
$(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xsd,\
DataTypeClass \
WhiteSpaceTreatment \
diff --git a/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl b/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
new file mode 100644
index 0000000..af5abed
--- /dev/null
+++ b/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
@@ -0,0 +1,30 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XSLT2TRANSFORMER_IDL
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XSLT2TRANSFORMER_IDL
+
+#include <com/sun/star/xml/xslt/XXSLTTransformer.idl>
+
+module com { module sun { module star { module xml { module xslt {
+
+/** Get XSLT filter transformer supporting XSLT 2.0.
+
+ @since LibreOffice 3.7
+ */
+service XSLT2Transformer : XXSLTTransformer
+{
+ create([in] sequence<any> args);
+};
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl b/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
new file mode 100644
index 0000000..f9d75e3
--- /dev/null
+++ b/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
@@ -0,0 +1,32 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XSLTTRANSFORMER_IDL
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XSLTTRANSFORMER_IDL
+
+#include <com/sun/star/xml/xslt/XXSLTTransformer.idl>
+
+module com { module sun { module star { module xml { module xslt {
+
+/** Get unspecified XSLT filter transformer.
+
+ <p>It is not safe to expect support for any features except XSLT 1.0 .
+
+ @since LibreOffice 3.7
+ */
+service XSLTTransformer : XXSLTTransformer
+{
+ create([in] sequence<any> args);
+};
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl b/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
new file mode 100644
index 0000000..9316c25
--- /dev/null
+++ b/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XXSLTTRANSFORMER_IDL
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XXSLTTRANSFORMER_IDL
+
+#include <com/sun/star/io/XActiveDataControl.idl>
+#include <com/sun/star/io/XActiveDataSink.idl>
+#include <com/sun/star/io/XActiveDataSource.idl>
+#include <com/sun/star/lang/XInitialization.idl>
+
+module com { module sun { module star { module xml { module xslt {
+
+/** An interface for XSLT transformers.
+
+ @since LibreOffice 3.7
+ */
+interface XXSLTTransformer
+{
+ interface com::sun::star::io::XActiveDataControl;
+ interface com::sun::star::io::XActiveDataSink;
+ interface com::sun::star::io::XActiveDataSource;
+ interface com::sun::star::lang::XInitialization;
+};
+
+}; }; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
--
1.7.11.7

File diff suppressed because it is too large Load Diff

@ -1,157 +0,0 @@
From 03bd2fd7b97f8f8164039203027f89e82c1c4212 Mon Sep 17 00:00:00 2001
From: David Tardon <dtardon@redhat.com>
Date: Fri, 10 Aug 2012 08:11:46 +0200
Subject: [PATCH 3/7] make avmedia build with gstreamer-0.10
Change-Id: I6124904cecdb8ea66477f40b6771a103a8058c10
Signed-off-by: David Tardon <dtardon@redhat.com>
---
avmedia/Library_avmediagst_0_10.mk | 65 +++++++++++++++++++++++++++++++++
avmedia/source/gstreamer/gstmanager.cxx | 2 +
avmedia/source/gstreamer/gstplayer.cxx | 8 ++--
configure.in | 2 +-
4 files changed, 73 insertions(+), 4 deletions(-)
create mode 100644 avmedia/Library_avmediagst_0_10.mk
diff --git a/avmedia/Library_avmediagst_0_10.mk b/avmedia/Library_avmediagst_0_10.mk
new file mode 100644
index 0000000..9347c2b
--- /dev/null
+++ b/avmedia/Library_avmediagst_0_10.mk
@@ -0,0 +1,65 @@
+# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Initial Developer of the Original Code is
+# Matúš Kukan <matus.kukan@gmail.com>
+# Portions created by the Initial Developer are Copyright (C) 2011 the
+# Initial Developer. All Rights Reserved.
+#
+# Major Contributor(s):
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_Library_Library,avmediagst_0_10))
+
+$(eval $(call gb_Library_set_componentfile,avmediagst_0_10,avmedia/source/gstreamer/avmediagstreamer_0_10))
+
+$(eval $(call gb_Library_set_include,avmediagst_0_10,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/avmedia/source/inc \
+ $(GSTREAMER_0_10_CFLAGS) \
+))
+$(eval $(call gb_Library_add_libs,avmediagst_0_10,$(GSTREAMER_0_10_LIBS)))
+
+$(eval $(call gb_Library_use_api,avmediagst_0_10,\
+ offapi \
+ udkapi \
+))
+
+ifeq ($(GUI),WNT)
+$(eval $(call gb_Library_add_defs,avmediagst_0_10,\
+ -DWINNT
+))
+endif
+
+$(eval $(call gb_Library_use_libraries,avmediagst_0_10,\
+ comphelper \
+ cppu \
+ cppuhelper \
+ sal \
+ tl \
+ vcl \
+ $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,avmediagst_0_10,\
+ avmedia/source/gstreamer/gst_0_10 \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/avmedia/source/gstreamer/gstmanager.cxx b/avmedia/source/gstreamer/gstmanager.cxx
index 6b3ffff..f04e5cc 100644
--- a/avmedia/source/gstreamer/gstmanager.cxx
+++ b/avmedia/source/gstreamer/gstmanager.cxx
@@ -34,11 +34,13 @@
#define AVMEDIA_GST_MANAGER_IMPLEMENTATIONNAME "com.sun.star.comp.avmedia.Manager_GStreamer"
#define AVMEDIA_GST_MANAGER_SERVICENAME "com.sun.star.media.Manager"
+#if !defined DBG
#if OSL_DEBUG_LEVEL > 2
#define DBG OSL_TRACE
#else
#define DBG(...)
#endif
+#endif
using namespace ::com::sun::star;
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index 28e5d34..3654410 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -50,11 +50,13 @@
# define AVVERSION "gst 1.0: "
#endif
-#if 1 //OSL_DEBUG_LEVEL > 2
+#if !defined DBG
+#if OSL_DEBUG_LEVEL > 2
#define DBG(...) do { fprintf (stderr, "%s", AVVERSION); fprintf (stderr, __VA_ARGS__); fprintf (stderr, "\n"); } while (0);
#else
#define DBG(...)
#endif
+#endif
using namespace ::com::sun::star;
@@ -192,7 +194,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
{
// DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
-#if 1 // OSL_DEBUG_LEVEL > 0
+#if OSL_DEBUG_LEVEL > 0
if ( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR )
{
GError* error;
@@ -575,7 +577,7 @@ awt::Size SAL_CALL Player::getPreferredPlayerWindowSize()
DBG( "%p Player::getPreferredPlayerWindowSize, member %d x %d", this, mnWidth, mnHeight );
TimeValue aTimeout = { 10, 0 };
-#if 1 // OSL_DEBUG_LEVEL > 2
+#if OSL_DEBUG_LEVEL > 2
osl::Condition::Result aResult =
#endif
maSizeCondition.wait( &aTimeout );
diff --git a/configure.in b/configure.in
index 46b9892..0b60c3f 100644
--- a/configure.in
+++ b/configure.in
@@ -8971,7 +8971,7 @@ if test "$build_gstreamer_0_10" = "yes"; then
if test "x$enable_gstreamer_0_10" != "xno"; then
ENABLE_GSTREAMER_0_10="TRUE"
AC_MSG_RESULT([yes])
- PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 )
+ PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 gstreamer-interfaces-0.10 )
else
AC_MSG_RESULT([no])
fi
--
1.7.11.4

File diff suppressed because it is too large Load Diff

@ -1,38 +0,0 @@
From 300a14c4904a97cc217e56231cbcc7134ff036f3 Mon Sep 17 00:00:00 2001
From: Michael Meeks <michael.meeks@suse.com>
Date: Mon, 13 Aug 2012 15:58:26 +0100
Subject: [PATCH 4/7] tweak old-school gstreamer link line
Change-Id: If3f42a53ccfb4829009171c9b8325b2cb06277c2
Signed-off-by: David Tardon <dtardon@redhat.com>
---
avmedia/Library_avmediagst_0_10.mk | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/avmedia/Library_avmediagst_0_10.mk b/avmedia/Library_avmediagst_0_10.mk
index 9347c2b..5e4df70 100644
--- a/avmedia/Library_avmediagst_0_10.mk
+++ b/avmedia/Library_avmediagst_0_10.mk
@@ -35,7 +35,6 @@ $(eval $(call gb_Library_set_include,avmediagst_0_10,\
-I$(SRCDIR)/avmedia/source/inc \
$(GSTREAMER_0_10_CFLAGS) \
))
-$(eval $(call gb_Library_add_libs,avmediagst_0_10,$(GSTREAMER_0_10_LIBS)))
$(eval $(call gb_Library_use_api,avmediagst_0_10,\
offapi \
@@ -58,6 +57,11 @@ $(eval $(call gb_Library_use_libraries,avmediagst_0_10,\
$(gb_STDLIBS) \
))
+$(eval $(call gb_Library_add_libs,avmediagst_0_10,\
+ $(GSTREAMER_0_10_LIBS) \
+ -lgstinterfaces-0.10 \
+))
+
$(eval $(call gb_Library_add_exception_objects,avmediagst_0_10,\
avmedia/source/gstreamer/gst_0_10 \
))
--
1.7.11.4

@ -1,30 +0,0 @@
From 9aa662f549625ae4dd4d9fe2f54a1943923b9774 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Fri, 31 Aug 2012 16:00:01 +0200
Subject: [PATCH 5/7] Don't fail configure with older
gstreamer-plugins-base-0.10
Change-Id: Ia00293747d6041b86975f0e6539246310abfb957
Signed-off-by: David Tardon <dtardon@redhat.com>
---
configure.in | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/configure.in b/configure.in
index 0b60c3f..0351551 100644
--- a/configure.in
+++ b/configure.in
@@ -8971,7 +8971,9 @@ if test "$build_gstreamer_0_10" = "yes"; then
if test "x$enable_gstreamer_0_10" != "xno"; then
ENABLE_GSTREAMER_0_10="TRUE"
AC_MSG_RESULT([yes])
- PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 gstreamer-interfaces-0.10 )
+ PKG_CHECK_MODULES( [GSTREAMER_0_10], [gstreamer-0.10 gstreamer-plugins-base-0.10 gstreamer-interfaces-0.10],, [
+ PKG_CHECK_MODULES( [GSTREAMER_0_10], [gstreamer-0.10 gstreamer-plugins-base-0.10] )
+ ])
else
AC_MSG_RESULT([no])
fi
--
1.7.11.4

@ -1,137 +0,0 @@
From d6297345b26d09d9f6caa25109a165c739e1f92b Mon Sep 17 00:00:00 2001
From: Michael Meeks <michael.meeks@suse.com>
Date: Tue, 18 Sep 2012 17:48:10 +0100
Subject: [PATCH 6/7] gstreamer: various fixes for 1.0 and cleanups
always re-create the playbin after the fakeVideo pre-roll to avoid 1.0 issues.
handle the GstVideoOverlay object being created before we get our XID.
set force-aspect-ratio to allow user scaling un-conditionally
Conflicts:
avmedia/source/gstreamer/gstplayer.cxx
Change-Id: I8892b8f7a125c0daa7101e28f274bff3de57ee08
---
avmedia/source/gstreamer/gstplayer.cxx | 46 ++++++++++++++++++++--------------
1 file changed, 27 insertions(+), 19 deletions(-)
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index 3654410..4bcca8e 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -51,11 +51,11 @@
#endif
#if !defined DBG
-#if OSL_DEBUG_LEVEL > 2
+# if OSL_DEBUG_LEVEL > 2
#define DBG(...) do { fprintf (stderr, "%s", AVVERSION); fprintf (stderr, __VA_ARGS__); fprintf (stderr, "\n"); } while (0);
-#else
+# else
#define DBG(...)
-#endif
+# endif
#endif
using namespace ::com::sun::star;
@@ -207,17 +207,20 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
#ifdef AVMEDIA_GST_0_10
if (message->structure &&
- !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) && mnWindowID != 0 )
+ !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) )
#else
- if (gst_message_has_name (message, "prepare-window-handle") && mnWindowID != 0 )
+ if (gst_is_video_overlay_prepare_window_handle_message (message) )
#endif
{
- DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
+ DBG( "%p processSyncMessage prepare window id: %s %d", this,
+ GST_MESSAGE_TYPE_NAME( message ), (int)mnWindowId );
if( mpXOverlay )
g_object_unref( G_OBJECT ( mpXOverlay ) );
+ g_object_set( GST_MESSAGE_SRC( message ), "force-aspect-ratio", FALSE, NULL );
mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
g_object_ref( G_OBJECT ( mpXOverlay ) );
- gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
+ if ( mnWindowID != 0 )
+ gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
return GST_BUS_DROP;
}
@@ -301,7 +304,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
mnWidth = w;
mnHeight = h;
- fprintf (stderr, "queried size: %d x %d", mnWidth, mnHeight );
+ DBG( "queried size: %d x %d", mnWidth, mnHeight );
maSizeCondition.set();
}
@@ -310,7 +313,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
}
#endif
} else if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR ) {
- fprintf (stderr, "Error !\n");
+ DBG( "Error !\n" );
if( mnWidth == 0 ) {
// an error occurred, set condition so that OOo thread doesn't wait for us
maSizeCondition.set();
@@ -331,9 +334,9 @@ void Player::preparePlaybin( const ::rtl::OUString& rURL, bool bFakeVideo )
}
mpPlaybin = gst_element_factory_make( "playbin", NULL );
-
- if( bFakeVideo )
- g_object_set( G_OBJECT( mpPlaybin ), "video-sink", gst_element_factory_make( "fakesink", NULL ), NULL );
+ if( bFakeVideo ) // used for getting prefered size etc.
+ g_object_set( G_OBJECT( mpPlaybin ), "video-sink",
+ gst_element_factory_make( "fakesink", NULL ), NULL );
mbFakeVideo = bFakeVideo;
@@ -343,7 +346,11 @@ void Player::preparePlaybin( const ::rtl::OUString& rURL, bool bFakeVideo )
pBus = gst_element_get_bus( mpPlaybin );
gst_bus_add_watch( pBus, pipeline_bus_callback, this );
DBG( "%p set sync handler", this );
+#ifdef AVMEDIA_GST_0_10
gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this );
+#else
+ gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this, NULL );
+#endif
g_object_unref( pBus );
}
@@ -582,13 +589,8 @@ awt::Size SAL_CALL Player::getPreferredPlayerWindowSize()
#endif
maSizeCondition.wait( &aTimeout );
- if( mbFakeVideo ) {
- mbFakeVideo = sal_False;
-
- g_object_set( G_OBJECT( mpPlaybin ), "video-sink", NULL, NULL );
- gst_element_set_state( mpPlaybin, GST_STATE_READY );
- gst_element_set_state( mpPlaybin, GST_STATE_PAUSED );
- }
+ if( mbFakeVideo ) // ready ourselves for the real thing
+ preparePlaybin( maURL, false );
DBG( "%p Player::getPreferredPlayerWindowSize after waitCondition %d, member %d x %d", this, aResult, mnWidth, mnHeight );
@@ -624,7 +626,13 @@ uno::Reference< ::media::XPlayerWindow > SAL_CALL Player::createPlayerWindow( co
const SystemEnvData* pEnvData = pParentWindow ? pParentWindow->GetSystemData() : NULL;
OSL_ASSERT(pEnvData);
if (pEnvData)
+ {
mnWindowID = pEnvData->aWindow;
+ DBG( "set window id to %d XOverlay %p\n", (int)mnWindowID, mpXOverlay);
+ gst_element_set_state( mpPlaybin, GST_STATE_PAUSED );
+ if ( mpXOverlay != NULL )
+ gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
+ }
}
}
--
1.7.11.4

@ -1,45 +0,0 @@
From 9a54dc0d4db8eab09c9eee01be09815276da3088 Mon Sep 17 00:00:00 2001
From: Michael Meeks <michael.meeks@suse.com>
Date: Tue, 18 Sep 2012 17:29:31 +0100
Subject: [PATCH 7/7] gstreamer: fix leaking pads.
Conflicts:
avmedia/source/gstreamer/gstplayer.cxx
Change-Id: Ie0ffb62c4f75f8af9c2268c07dfabf14ba036115
---
avmedia/source/gstreamer/gstplayer.cxx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index 4bcca8e..448ea2d 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -271,6 +271,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
gst_structure_get_int( pStructure, "height", &mnHeight );
DBG( "queried size: %d x %d", mnWidth, mnHeight );
}
+ g_object_unref (pPad);
}
}
@@ -297,7 +298,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
caps = gst_pad_get_current_caps( pad );
- if( gst_structure_get( gst_caps_get_structure (caps, 0),
+ if( gst_structure_get( gst_caps_get_structure( caps, 0 ),
"width", G_TYPE_INT, &w,
"height", G_TYPE_INT, &h,
NULL ) ) {
@@ -309,6 +310,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
maSizeCondition.set();
}
gst_caps_unref( caps );
+ g_object_unref( pad );
}
}
#endif
--
1.7.11.4

@ -1,9 +1,9 @@
# download path contains version without the last (fourth) digit # download path contains version without the last (fourth) digit
%define libo_version 3.6.4 %define libo_version 4.0.0
# Should contain .alphaX / .betaX, if this is pre-release (actually # Should contain .alphaX / .betaX, if this is pre-release (actually
# pre-RC) version. The pre-release string is part of tarball file names, # pre-RC) version. The pre-release string is part of tarball file names,
# so we need a way to define it easily at one place. # so we need a way to define it easily at one place.
# %%define libo_prerelease %define libo_prerelease .alpha1
# rhbz#715152 state vendor # rhbz#715152 state vendor
%if 0%{?rhel} %if 0%{?rhel}
%define vendoroption --with-vendor="Red Hat, Inc." %define vendoroption --with-vendor="Red Hat, Inc."
@ -20,13 +20,10 @@
%define source_url http://dev-builds.libreoffice.org/pre-releases/src %define source_url http://dev-builds.libreoffice.org/pre-releases/src
# %%define source_url http://download.documentfoundation.org/libreoffice/src/%{libo_version} # %%define source_url http://download.documentfoundation.org/libreoffice/src/%{libo_version}
# use rpmbuild --without binfilter (or mock --without binfilter) to get # get english only and no-langpacks for a faster smoketest build
# a faster build without old binary filters
# fedpkg compile/install/local/mockbuild does not handle --without ATM, # fedpkg compile/install/local/mockbuild does not handle --without ATM,
# so it is necessary to change this to bcond_with to achieve the same # so it is necessary to change this to bcond_with to achieve the same
# effect # effect
%bcond_without binfilter
# get english only and no-langpacks for a faster smoketest build
%bcond_without langpacks %bcond_without langpacks
%if %{with langpacks} %if %{with langpacks}
@ -43,21 +40,19 @@
Summary: Free Software Productivity Suite Summary: Free Software Productivity Suite
Name: libreoffice Name: libreoffice
Epoch: 1 Epoch: 1
Version: %{libo_version}.1 Version: %{libo_version}.0
Release: 1%{?libo_prerelease}%{?dist} Release: 1%{?libo_prerelease}%{?dist}
License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic and MPLv2.0 License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic and MPLv2.0
Group: Applications/Productivity Group: Applications/Productivity
URL: http://www.documentfoundation.org/develop URL: http://www.documentfoundation.org/develop
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Source0: %{source_url}/libreoffice-core-%{version}%{?libo_prerelease}.tar.xz Source0: %{source_url}/libreoffice-%{version}%{?libo_prerelease}.tar.xz
Source1: %{source_url}/libreoffice-binfilter-%{version}%{?libo_prerelease}.tar.xz
Source2: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}.tar.xz Source2: %{source_url}/libreoffice-help-%{version}%{?libo_prerelease}.tar.xz
Source3: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}.tar.xz Source3: %{source_url}/libreoffice-translations-%{version}%{?libo_prerelease}.tar.xz
Source4: http://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll Source4: http://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll
Source5: redhat-langpacks.tar.gz Source5: redhat-langpacks.tar.gz
Source6: libreoffice-multiliblauncher.sh Source6: libreoffice-multiliblauncher.sh
Source7: http://hg.services.openoffice.org/binaries/fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz
Source8: http://hg.services.openoffice.org/binaries/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip Source8: http://hg.services.openoffice.org/binaries/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
Source9: http://hg.services.openoffice.org/binaries/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz Source9: http://hg.services.openoffice.org/binaries/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
Source10: http://hg.services.openoffice.org/binaries/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip Source10: http://hg.services.openoffice.org/binaries/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@ -138,17 +133,13 @@ BuildRequires: libcmis-devel
%endif %endif
BuildRequires: libcurl-devel BuildRequires: libcurl-devel
%if %{undefined rhel} || 0%{?rhel} >= 7 %if %{undefined rhel} || 0%{?rhel} >= 7
BuildRequires: libdb-devel
%else
BuildRequires: db4-devel
%endif
%if %{undefined rhel} || 0%{?rhel} >= 7
BuildRequires: libexttextcat-devel BuildRequires: libexttextcat-devel
%endif %endif
BuildRequires: libicu-devel BuildRequires: libicu-devel
BuildRequires: libidn-devel BuildRequires: libidn-devel
BuildRequires: libjpeg-devel BuildRequires: libjpeg-devel
BuildRequires: librsvg2-devel BuildRequires: liblangtag-devel
BuildRequires: liborcus-devel
%if %{undefined rhel} || 0%{?rhel} >= 7 %if %{undefined rhel} || 0%{?rhel} >= 7
BuildRequires: libvisio-devel BuildRequires: libvisio-devel
BuildRequires: libwpd-devel BuildRequires: libwpd-devel
@ -224,27 +215,8 @@ Patch4: openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch
Patch5: openoffice.org-3.1.0.ooo101274.opening-a-directory.patch Patch5: openoffice.org-3.1.0.ooo101274.opening-a-directory.patch
Patch6: openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch Patch6: openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch
Patch7: libreoffice-installfix.patch Patch7: libreoffice-installfix.patch
Patch8: 0001-Resolves-rhbz-838368-view-ignored-while-view-accepte.patch
Patch9: 0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch
Patch10: 0001-Resolves-rhbz-846775-Clipboard-must-be-disposed-befo.patch
Patch11: 0001-Resolves-rhbz-842292-crash-in-calling-callback-whose.patch
Patch12: 0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch
Patch13: 0001-tentative-initial-attempt-at-re-work-for-new-playbin.patch
Patch14: 0002-gstreamer-make-gstreamer-1.0-and-0.10-dual-compile.patch
Patch15: 0003-make-avmedia-build-with-gstreamer-0.10.patch
Patch16: 0004-tweak-old-school-gstreamer-link-line.patch
Patch17: 0005-Don-t-fail-configure-with-older-gstreamer-plugins-ba.patch
Patch18: 0006-gstreamer-various-fixes-for-1.0-and-cleanups.patch
Patch19: 0007-gstreamer-fix-leaking-pads.patch
Patch20: 0001-convert-java-XSL-transformer-into-extension.patch
Patch21: 0002-rework-selection-of-transformer-for-an-XSLT-filter.patch
Patch22: 0003-drop-saxon-based-XSLT-transformer.patch
Patch23: 0004-remove-all-traces-of-saxon.patch
Patch24: 0001-do-not-strip-install-set.patch
Patch25: 0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch
#to-do, fix this on bigendian platforms #to-do, fix this on bigendian platforms
Patch26: 0001-disable-failing-check.patch Patch26: 0001-disable-failing-check.patch
Patch27: 0001-fiddle-system-db-test-to-link-on-RHEL-6.patch
Patch28: 0001-split-qnametostr-up-to-try-and-make-.o-s-small-enoug.patch Patch28: 0001-split-qnametostr-up-to-try-and-make-.o-s-small-enoug.patch
%if %{defined rhel} && 0%{?rhel} < 7 %if %{defined rhel} && 0%{?rhel} < 7
Patch29: libreoffice-rhel6gcj.patch Patch29: libreoffice-rhel6gcj.patch
@ -586,16 +558,6 @@ Requires: %{name}-core = %{epoch}:%{version}-%{release}
A plug-in for LibreOffice that enables integration into the KDE desktop environment. A plug-in for LibreOffice that enables integration into the KDE desktop environment.
%endif %endif
%if %{with binfilter}
%package binfilter
Summary: Legacy binary filters for LibreOffice
Group: Applications/Productivity
Requires: %{name}-core = %{epoch}:%{version}-%{release}
%description binfilter
Filters for old StarOffice binary formats.
%endif
%if 0%{?_enable_debug_packages} %if 0%{?_enable_debug_packages}
%define debug_package %{nil} %define debug_package %{nil}
@ -861,9 +823,8 @@ Rules for auto-correcting common %{langname} typing errors. \
%endif %endif
%prep %prep
%setup -q -c -a 1 -a 2 -a 3 %setup -q -n %{name}-%{version}%{?libo_prerelease} -a 2 -a 3
rm -rf git-hooks */git-hooks rm -rf git-hooks */git-hooks
for a in */*; do mv `pwd`/$a .; done
#Customize Palette to remove Sun colours and add Red Hat colours #Customize Palette to remove Sun colours and add Red Hat colours
(head -n -1 extras/source/palettes/standard.soc && \ (head -n -1 extras/source/palettes/standard.soc && \
echo -e ' <draw:color draw:name="Red Hat 1" draw:color="#cc0000"/> echo -e ' <draw:color draw:name="Red Hat 1" draw:color="#cc0000"/>
@ -878,33 +839,14 @@ mv -f redhat.soc extras/source/palettes/standard.soc
%patch3 -p1 -b .ooo88341.sc.verticalboxes.patch %patch3 -p1 -b .ooo88341.sc.verticalboxes.patch
%patch4 -p1 -b .oooXXXXX.solenv.allowmissing.patch %patch4 -p1 -b .oooXXXXX.solenv.allowmissing.patch
%patch5 -p1 -b .ooo101274.opening-a-directory.patch %patch5 -p1 -b .ooo101274.opening-a-directory.patch
%patch6 -p1 -b .ooo105784.vcl.sniffscriptforsubs.patch # FIXME ask Eike/Caolan about the broken hunk
#%%patch6 -p1 -b .ooo105784.vcl.sniffscriptforsubs.patch
%patch7 -p1 -b .libreoffice-installfix.patch %patch7 -p1 -b .libreoffice-installfix.patch
%patch8 -p1 -b .rhbz838368-view-ignored-while-view-accepte.patch
%patch9 -p1 -b .rhbz-836937-insanely-slow-with-Zemberek-ins.patch
%patch10 -p1 -b .rhbz-846775-Clipboard-must-be-disposed-befo.patch
%patch11 -p1 -b .rhbz-842292-crash-in-calling-callback-whose.patch
%patch12 -p1 -b .rhbz-855541-XIOError-handler-multithread-wo.patch
%patch13 -p1 -b .tentative-initial-attempt-at-re-work-for-new-playbin.patch
%patch14 -p1 -b .gstreamer-make-gstreamer-1.0-and-0.10-dual-compile.patch
%patch15 -p1 -b .make-avmedia-build-with-gstreamer-0.10.patch
%patch16 -p1 -b .tweak-old-school-gstreamer-link-line.patch
%patch17 -p1 -b .Don-t-fail-configure-with-older-gstreamer-plugins-ba.patch
%patch18 -p1 -b .gstreamer-various-fixes-for-1.0-and-cleanups.patch
%patch19 -p1 -b .gstreamer-fix-leaking-pads.patch
%patch20 -p1 -b .convert-java-XSL-transformer-into-extension.patch
%patch21 -p1 -b .rework-selection-of-transformer-for-an-XSLT-filter.patch
%patch22 -p1 -b .drop-saxon-based-XSLT-transformer.patch
%patch23 -p1 -b .remove-all-traces-of-saxon.patch
%patch24 -p1 -b .do-not-strip-install-set.patch
%patch25 -p1 -b .fdo-56198-collect-scrollbar-click-preferenc.patch
%patch26 -p1 -b .disable-failing-check.patch %patch26 -p1 -b .disable-failing-check.patch
%patch27 -p1 -b .fiddle-system-db-test-to-link-on-RHEL-6.patch
%patch28 -p1 -b .split-qnametostr-up-to-try-and-make-.o-s-small-enoug.patch
%if %{defined rhel} && 0%{?rhel} < 7 %if %{defined rhel} && 0%{?rhel} < 7
%patch29 -p1 -b .rhel6gcj.patch #%patch29 -p1 -b .rhel6gcj.patch
%patch30 -p1 -b .rhel6poppler.patch #%patch30 -p1 -b .rhel6poppler.patch
%patch31 -p1 -b .rhel6langs.patch #%patch31 -p1 -b .rhel6langs.patch
%endif %endif
# TODO: check this # TODO: check this
@ -966,7 +908,6 @@ touch autogen.lastrun
--disable-gnome-vfs --enable-gio --enable-symbols --enable-lockdown \ --disable-gnome-vfs --enable-gio --enable-symbols --enable-lockdown \
--enable-evolution2 --enable-dbus --enable-opengl --enable-vba \ --enable-evolution2 --enable-dbus --enable-opengl --enable-vba \
--enable-ext-presenter-minimizer --enable-ext-nlpsolver \ --enable-ext-presenter-minimizer --enable-ext-nlpsolver \
--enable-ext-presenter-console --enable-ext-pdfimport \
--enable-ext-wiki-publisher --enable-ext-report-builder \ --enable-ext-wiki-publisher --enable-ext-report-builder \
--enable-ext-scripting-beanshell --enable-ext-scripting-javascript \ --enable-ext-scripting-beanshell --enable-ext-scripting-javascript \
--without-system-servlet-api \ --without-system-servlet-api \
@ -978,12 +919,10 @@ touch autogen.lastrun
%{?with_lang} --with-poor-help-localizations="$POORHELPS" \ %{?with_lang} --with-poor-help-localizations="$POORHELPS" \
--with-external-tar=`pwd`/ext_sources --with-java-target-version=1.5 \ --with-external-tar=`pwd`/ext_sources --with-java-target-version=1.5 \
%{distrooptions} \ %{distrooptions} \
%{?with_binfilter:--enable-binfilter} \
--disable-fetch-external --disable-fetch-external
mkdir -p ext_sources mkdir -p ext_sources
cp %{SOURCE4} ext_sources cp %{SOURCE4} ext_sources
cp %{SOURCE7} ext_sources
cp %{SOURCE8} ext_sources cp %{SOURCE8} ext_sources
cp %{SOURCE9} ext_sources cp %{SOURCE9} ext_sources
cp %{SOURCE10} ext_sources cp %{SOURCE10} ext_sources
@ -1354,7 +1293,7 @@ echo "NoDisplay=true" >> startcenter.desktop
sed -i -e "/NoDisplay=true/d" qstart.desktop sed -i -e "/NoDisplay=true/d" qstart.desktop
# relocate the .desktop and icon files # relocate the .desktop and icon files
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications
for app in base %{?with_binfilter:binfilter} calc draw impress javafilter math startcenter writer xsltfilter; do for app in base calc draw impress javafilter math startcenter writer xsltfilter; do
# FIXME enable again # FIXME enable again
# desktop-file-validate $app.desktop # desktop-file-validate $app.desktop
cp -p $app.desktop $RPM_BUILD_ROOT/%{_datadir}/applications/libreoffice-$app.desktop cp -p $app.desktop $RPM_BUILD_ROOT/%{_datadir}/applications/libreoffice-$app.desktop
@ -2146,41 +2085,10 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%{baseinstdir}/program/libvclplug_kde4lo.so %{baseinstdir}/program/libvclplug_kde4lo.so
%endif %endif
%if %{with binfilter}
%files binfilter
%defattr(-,root,root,-)
%{baseinstdir}/program/legacy_binfilters.rdb
%{baseinstdir}/program/libbf_frmlo.so
%{baseinstdir}/program/libbf_golo.so
%{baseinstdir}/program/libbf_migratefilterlo.so
%{baseinstdir}/program/libbf_ofalo.so
%{baseinstdir}/program/libbf_sblo.so
%{baseinstdir}/program/libbf_schlo.so
%{baseinstdir}/program/libbf_sclo.so
%{baseinstdir}/program/libbf_sdlo.so
%{baseinstdir}/program/libbf_smlo.so
%{baseinstdir}/program/libbf_solo.so
%{baseinstdir}/program/libbf_svtlo.so
%{baseinstdir}/program/libbf_svxlo.so
%{baseinstdir}/program/libbf_swlo.so
%{baseinstdir}/program/libbf_wrapperlo.so
%{baseinstdir}/program/libbf_xolo.so
%{baseinstdir}/program/libbindetlo.so
%{baseinstdir}/program/liblegacy_binfilterslo.so
%{baseinstdir}/program/resource/bf_frmen-US.res
%{baseinstdir}/program/resource/bf_ofaen-US.res
%{baseinstdir}/program/resource/bf_scen-US.res
%{baseinstdir}/program/resource/bf_schen-US.res
%{baseinstdir}/program/resource/bf_sden-US.res
%{baseinstdir}/program/resource/bf_smen-US.res
%{baseinstdir}/program/resource/bf_svten-US.res
%{baseinstdir}/program/resource/bf_svxen-US.res
%{baseinstdir}/program/resource/bf_swen-US.res
%{baseinstdir}/share/registry/binfilter.xcd
%{_datadir}/applications/libreoffice-binfilter.desktop
%endif
%changelog %changelog
* Mon Nov 26 2012 David Tardon <dtardon@redhat.com> - 1:4.0.0.0.alpha1-1
- 4.0.0 alpha1
* Sun Nov 18 2012 David Tardon <dtardon@redhat.com> - 1:3.6.4.1-1 * Sun Nov 18 2012 David Tardon <dtardon@redhat.com> - 1:3.6.4.1-1
- 3.6.4 rc1 - 3.6.4 rc1

@ -33,7 +33,7 @@ index de1506a..5522e69 100644
- // except when font size is from conditional formatting. - // except when font size is from conditional formatting.
- //! Allow clipping when vertically merged? - //! Allow clipping when vertically merged?
- if ( eType != OUTTYPE_PRINTER || - if ( eType != OUTTYPE_PRINTER ||
- ( pDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) || - ( mpDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) ||
- ( rParam.mpCondSet && SFX_ITEM_SET == - ( rParam.mpCondSet && SFX_ITEM_SET ==
- rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) ) - rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) )
+ if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet)) + if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet))
@ -68,7 +68,7 @@ index de1506a..5522e69 100644
- // except when font size is from conditional formatting. - // except when font size is from conditional formatting.
- //! Allow clipping when vertically merged? - //! Allow clipping when vertically merged?
- if ( eType != OUTTYPE_PRINTER || - if ( eType != OUTTYPE_PRINTER ||
- ( pDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) || - ( mpDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) ||
- ( rParam.mpCondSet && SFX_ITEM_SET == - ( rParam.mpCondSet && SFX_ITEM_SET ==
- rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) ) - rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) )
+ +
@ -84,7 +84,7 @@ index de1506a..5522e69 100644
- // except when font size is from conditional formatting. - // except when font size is from conditional formatting.
- //! Allow clipping when vertically merged? - //! Allow clipping when vertically merged?
- if ( eType != OUTTYPE_PRINTER || - if ( eType != OUTTYPE_PRINTER ||
- ( pDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) || - ( mpDoc->GetRowFlags( rParam.mnCellY, nTab ) & CR_MANUALSIZE ) ||
- ( rParam.mpCondSet && SFX_ITEM_SET == - ( rParam.mpCondSet && SFX_ITEM_SET ==
- rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) ) - rParam.mpCondSet->GetItemState(ATTR_FONT_HEIGHT, true) ) )
+ if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet)) + if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet))
@ -92,7 +92,7 @@ index de1506a..5522e69 100644
else else
bSimClip = true; bSimClip = true;
@@ -4460,6 +4456,20 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam) @@ -4460,6 +4456,20 @@ void ScOutputData::DrawEditAsianVertical(DrawEditParam& rParam)
rParam.adjustForHyperlinkInPDF(aURLStart, pDev); rParam.adjustForHyperlinkInPDF(aURLStart, mpDev);
} }
+bool ScOutputData::UseNormalClip(SCROW nCellY, const SfxItemSet* pCondSet) +bool ScOutputData::UseNormalClip(SCROW nCellY, const SfxItemSet* pCondSet)

@ -29,16 +29,16 @@ index 676acd5..4a599c9 100644
#include <cppuhelper/implbase1.hxx> #include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/ucb/CheckinArgument.hpp>
#include <com/sun/star/ucb/ContentCreationError.hpp> #include <com/sun/star/ucb/ContentCreationError.hpp>
#include <com/sun/star/ucb/XCommandEnvironment.hpp> #include <com/sun/star/ucb/XCommandEnvironment.hpp>
#include <com/sun/star/ucb/XCommandInfo.hpp>
@@ -47,6 +48,8 @@ @@ -47,6 +48,8 @@
#include <com/sun/star/ucb/ContentAction.hpp> #include <com/sun/star/ucb/ContentAction.hpp>
#include <com/sun/star/ucb/OpenCommandArgument2.hpp> #include <com/sun/star/ucb/OpenCommandArgument2.hpp>
#include <com/sun/star/ucb/InsertCommandArgument.hpp> #include <com/sun/star/ucb/InsertCommandArgument.hpp>
+#include <com/sun/star/ucb/IOErrorCode.hpp> +#include <com/sun/star/ucb/IOErrorCode.hpp>
+#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp> +#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
#include <com/sun/star/ucb/GlobalTransferCommandArgument.hpp> #include <com/sun/star/ucb/GlobalTransferCommandArgument2.hpp>
#include <com/sun/star/ucb/NameClash.hpp> #include <com/sun/star/ucb/NameClash.hpp>
#include <com/sun/star/ucb/OpenMode.hpp> #include <com/sun/star/ucb/OpenMode.hpp>
@@ -64,6 +67,8 @@ @@ -64,6 +67,8 @@
@ -49,7 +49,7 @@ index 676acd5..4a599c9 100644
+ +
#include <ucbhelper/macros.hxx> #include <ucbhelper/macros.hxx>
#include <ucbhelper/content.hxx> #include <ucbhelper/content.hxx>
#include <ucbhelper/contentbroker.hxx> #include <ucbhelper/activedatasink.hxx>
@@ -71,6 +76,10 @@ @@ -71,6 +76,10 @@
#include <ucbhelper/activedatastreamer.hxx> #include <ucbhelper/activedatastreamer.hxx>
#include <ucbhelper/interactionrequest.hxx> #include <ucbhelper/interactionrequest.hxx>

@ -5,21 +5,21 @@ retrieving revision 1.17
diff -u -p -r1.17 scriptitems.pm diff -u -p -r1.17 scriptitems.pm
--- openoffice.org.orig/solenv/bin/modules/installer/scriptitems.pm 24 Feb 2005 16:21:15 -0000 1.17 --- openoffice.org.orig/solenv/bin/modules/installer/scriptitems.pm 24 Feb 2005 16:21:15 -0000 1.17
+++ openoffice.org/solenv/bin/modules/installer/scriptitems.pm 18 Mar 2005 22:39:42 -0000 +++ openoffice.org/solenv/bin/modules/installer/scriptitems.pm 18 Mar 2005 22:39:42 -0000
@@ -1066,7 +1066,7 @@ @@ -963,7 +963,7 @@
} }
else else
{ {
- $infoline = "ERROR: Source for $$searchfilenameref not found!\n"; # Important message in log file - $infoline = "ERROR: Source for $$searchfilenameref not found!\n"; # Important message in log file
+ $infoline = "WARNING: Source for $$searchfilenameref not found!\n"; # Important message in log file + $infoline = "WARNING: Source for $$searchfilenameref not found!\n"; # Important message in log file
} }
push( @installer::globals::logfileinfo, $infoline); push( @installer::globals::logfileinfo, $infoline);
@@ -1144,7 +1144,7 @@ @@ -1039,7 +1039,7 @@
} }
else else
{ {
- $infoline = "ERROR: Source for $$searchfilenameref not found!\n"; # Important message in log file - $infoline = "ERROR: Source for $$searchfilenameref not found!\n"; # Important message in log file
+ $infoline = "WARNING: Source for $$searchfilenameref not found!\n"; # Important message in log file + $infoline = "WARNING: Source for $$searchfilenameref not found!\n"; # Important message in log file
} }
push( @installer::globals::logfileinfo, $infoline); push( @installer::globals::logfileinfo, $infoline);
@ -35,7 +35,7 @@ diff -u -p -r1.17 scriptitems.pm
- $error_occurred = 1; - $error_occurred = 1;
+ push(@missingfiles, "WARNING: File not found: $filename\n"); + push(@missingfiles, "WARNING: File not found: $filename\n");
next; # removing this file from list, if sourcepath is empty next; # removing this file from list, if sourcepath is empty
} }
@@ -1368,11 +1367,10 @@ @@ -1368,11 +1367,10 @@
{ {
@ -49,7 +49,7 @@ diff -u -p -r1.17 scriptitems.pm
- $error_occurred = 1; - $error_occurred = 1;
+ push(@missingfiles, "WARNING: File not found: $filename\n"); + push(@missingfiles, "WARNING: File not found: $filename\n");
next; # removing this file from list, if sourcepath is empty next; # removing this file from list, if sourcepath is empty
} }
@@ -1390,11 +1388,10 @@ @@ -1390,11 +1388,10 @@
{ {
@ -63,16 +63,16 @@ diff -u -p -r1.17 scriptitems.pm
- $error_occurred = 1; - $error_occurred = 1;
+ push(@missingfiles, "WARNING: File not found: $filename\n"); + push(@missingfiles, "WARNING: File not found: $filename\n");
next; # removing this file from list, if sourcepath is empty next; # removing this file from list, if sourcepath is empty
} }
--- openoffice.org.orig/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:26.000000000 +0100 --- openoffice.org.orig/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:26.000000000 +0100
+++ openoffice.org/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:54.000000000 +0100 +++ openoffice.org/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:54.000000000 +0100
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
( $installer::globals::packageformat eq "archive" )) ( $installer::globals::packageformat eq "archive" ))
{ {
$installer::globals::is_simple_packager_project = 1; $installer::globals::is_simple_packager_project = 1;
- $installer::globals::patch_user_dir = 1; - $installer::globals::patch_user_dir = 1;
+ $installer::globals::patch_user_dir = 0; + $installer::globals::patch_user_dir = 1;
} }
elsif( $installer::globals::packageformat eq "dmg" ) elsif( $installer::globals::packageformat eq "dmg" )
{ {

@ -23,7 +23,7 @@ index 4d02a76..ecd3b5d 100644
#include <algorithm> #include <algorithm>
@@ -747,6 +750,138 @@ static void addtopattern(FcPattern *pPattern, @@ -747,6 +750,138 @@ static void addtopattern(FcPattern *pPattern,
} return 0;
} }
+static const char* pick_sample_language(const sal_uInt32 cCode) +static const char* pick_sample_language(const sal_uInt32 cCode)

@ -5,10 +5,8 @@
185d60944ea767075d27247c3162b3bc 185d60944ea767075d27247c3162b3bc-unowinreg.dll 185d60944ea767075d27247c3162b3bc 185d60944ea767075d27247c3162b3bc-unowinreg.dll
c1b5b8d1dd929a1261a6f8872d92b799 redhat-langpacks.tar.gz c1b5b8d1dd929a1261a6f8872d92b799 redhat-langpacks.tar.gz
74939c9ea525374776f09bf972ede99f libreoffice-multiliblauncher.sh 74939c9ea525374776f09bf972ede99f libreoffice-multiliblauncher.sh
fdb27bfe2dbe2e7b57ae194d9bf36bab fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz
a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
1f24ab1d39f4a51faf22244c94a6203f 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz 1f24ab1d39f4a51faf22244c94a6203f 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
49164be68b7eeaf4f8070145194b14a1 libreoffice-binfilter-3.6.4.1.tar.xz 8200d0c9da3615a09d94068eada02c28 libreoffice-4.0.0.0.alpha1.tar.xz
ae3aaab557c5f76ad93f70825ec0c6cb libreoffice-core-3.6.4.1.tar.xz b3912d2b9f8312a3b85472890997704d libreoffice-help-4.0.0.0.alpha1.tar.xz
489bf570cd73180b988588714901efa3 libreoffice-help-3.6.4.1.tar.xz 9dfdbac725c0a31b411026108cf7cf22 libreoffice-translations-4.0.0.0.alpha1.tar.xz
12126bfed467d06b85e1e24647c5c45b libreoffice-translations-3.6.4.1.tar.xz

Loading…
Cancel
Save