diff --git a/.gitignore b/.gitignore index c3886a4..5b9a5ac 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,6 @@ /libreoffice-core-3.6.4.1.tar.xz /libreoffice-help-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 diff --git a/0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch b/0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch deleted file mode 100644 index f744995..0000000 --- a/0001-Resolves-fdo-56198-collect-scrollbar-click-preferenc.patch +++ /dev/null @@ -1,257 +0,0 @@ -From 2efa35a812a6f1e35e4959a357f50feff7e598f5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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([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 - diff --git a/0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch b/0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch deleted file mode 100644 index 0e4a891..0000000 --- a/0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch +++ /dev/null @@ -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 - #include - #include - #include -@@ -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 xContext(comphelper::getProcessComponentContext()); -+ -+ uno::Reference xExtensionManager( -+ deployment::ExtensionManager::get(xContext)); -+ if (xExtensionManager.is()) -+ { -+ xMB = uno::Reference(xExtensionManager, uno::UNO_QUERY_THROW); -+ -+ uno::Reference 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 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 // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type --#include // helper for implementations -+#include // helper for implementations - #include //OMultiTypeInterfaceContainerHelper - - -@@ -39,8 +39,10 @@ - #include - #include - #include -+#include -+#include - #include -- -+#include - #include - - #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(); diff --git a/0001-Resolves-rhbz-838368-view-ignored-while-view-accepte.patch b/0001-Resolves-rhbz-838368-view-ignored-while-view-accepte.patch deleted file mode 100644 index d434c9b..0000000 --- a/0001-Resolves-rhbz-838368-view-ignored-while-view-accepte.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 4fc8af89257436b9cad70de574a166aa11ec42f1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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 - diff --git a/0001-Resolves-rhbz-842292-crash-in-calling-callback-whose.patch b/0001-Resolves-rhbz-842292-crash-in-calling-callback-whose.patch deleted file mode 100644 index 3bb23ee..0000000 --- a/0001-Resolves-rhbz-842292-crash-in-calling-callback-whose.patch +++ /dev/null @@ -1,144 +0,0 @@ -From c29af1572ad15ac5199a09e5812fb8354c165329 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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 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(); -+ clearAutoScrollFunctor(); - mbIsAutoScrollActive = false; - return false; - } - -- -- -+void ScrollBarManager::clearAutoScrollFunctor() -+{ -+ maAutoScrollFunctor = ::boost::function(); -+} - - 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 - diff --git a/0001-Resolves-rhbz-846775-Clipboard-must-be-disposed-befo.patch b/0001-Resolves-rhbz-846775-Clipboard-must-be-disposed-befo.patch deleted file mode 100644 index 5cdb4be..0000000 --- a/0001-Resolves-rhbz-846775-Clipboard-must-be-disposed-befo.patch +++ /dev/null @@ -1,66 +0,0 @@ -From e99813f9372d24d3d2d734573c582d3e257cb5cc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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 mpPageSelector; - ::boost::scoped_ptr mpFocusManager; - ::boost::shared_ptr mpSlotManager; -- ::boost::scoped_ptr mpClipboard; - ::boost::scoped_ptr mpScrollBarManager; - mutable ::boost::shared_ptr mpCurrentSlideManager; - ::boost::shared_ptr mpSelectionManager; -+ ::boost::scoped_ptr mpClipboard; - ::boost::shared_ptr mpInsertionIndicatorHandler; - ::boost::shared_ptr mpAnimator; - ::boost::scoped_ptr mpVisibleAreaManager; --- -1.7.11.2 - diff --git a/0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch b/0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch deleted file mode 100644 index fdf22d6..0000000 --- a/0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch +++ /dev/null @@ -1,74 +0,0 @@ -From b0759366fc6cdda2db2f2cb4208df36c1b1fe8fc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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 - diff --git a/0001-convert-java-XSL-transformer-into-extension.patch b/0001-convert-java-XSL-transformer-into-extension.patch deleted file mode 100644 index 1662751..0000000 --- a/0001-convert-java-XSL-transformer-into-extension.patch +++ /dev/null @@ -1,214 +0,0 @@ -From db698b1878a38c732e73bf0e5ab06368b1a5f29a Mon Sep 17 00:00:00 2001 -From: David Tardon -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 @@ -+ -+ -+ -+ -+ -+ -+ -+ -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 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ The Document Foundation -+ -+ -+ -+ XSLT 2.0 transformer -+ -+ -+ -+ -+ -+ -+ -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 @@ -+ -+ -+ -+ -+ -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 - diff --git a/0001-disable-failing-check.patch b/0001-disable-failing-check.patch index 0cf63df..44d2f67 100644 --- a/0001-disable-failing-check.patch +++ b/0001-disable-failing-check.patch @@ -3,10 +3,10 @@ index 6280984..ffafa6b 100644 --- a/sw/Module_sw.mk +++ b/sw/Module_sw.mk @@ -55,7 +55,6 @@ - CppunitTest_sw_filters_test \ + $(eval $(call gb_Module_add_slowcheck_targets,sw,\ CppunitTest_sw_macros_test \ CppunitTest_sw_subsequent_ooxmlexport \ -- CppunitTest_sw_subsequent_ooxmltok \ - CppunitTest_sw_subsequent_ww8tok \ +- CppunitTest_sw_subsequent_ooxmlimport \ + CppunitTest_sw_subsequent_ww8export \ + CppunitTest_sw_subsequent_ww8import \ CppunitTest_sw_subsequent_rtfexport \ - CppunitTest_sw_subsequent_rtftok \ diff --git a/0001-do-not-strip-install-set.patch b/0001-do-not-strip-install-set.patch deleted file mode 100644 index 56b18e4..0000000 --- a/0001-do-not-strip-install-set.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 5155612a6e3a63d5b29fa3da522c2544dc6c8453 Mon Sep 17 00:00:00 2001 -From: David Tardon -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 - diff --git a/0001-fiddle-system-db-test-to-link-on-RHEL-6.patch b/0001-fiddle-system-db-test-to-link-on-RHEL-6.patch deleted file mode 100644 index 57bf9fe..0000000 --- a/0001-fiddle-system-db-test-to-link-on-RHEL-6.patch +++ /dev/null @@ -1,40 +0,0 @@ -From efd2dddb7b2e7fe2a91f0da9b5f282bf1ca9cabb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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 - diff --git a/0001-split-qnametostr-up-to-try-and-make-.o-s-small-enoug.patch b/0001-split-qnametostr-up-to-try-and-make-.o-s-small-enoug.patch deleted file mode 100644 index 30e69ec..0000000 --- a/0001-split-qnametostr-up-to-try-and-make-.o-s-small-enoug.patch +++ /dev/null @@ -1,208 +0,0 @@ -From f1c795baf1268c2650c706fc2aec28c2a7fbaf0e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -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 @@ - - - -+#include "doctok/resourceids.hxx" -+#include "resourcemodel/QNameToString.hxx" -+ -+namespace writerfilter -+{ - - - -+} - - -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 & out) - - - -+#include "ooxml/resourceids.hxx" -+#include "resourcemodel/QNameToString.hxx" -+ -+namespace writerfilter -+{ - - -+} - - -- -\ No newline at end of file -+ -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 -+ -+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(); -+} -+ -+} diff --git a/0001-tentative-initial-attempt-at-re-work-for-new-playbin.patch b/0001-tentative-initial-attempt-at-re-work-for-new-playbin.patch deleted file mode 100644 index dbbd7fe..0000000 --- a/0001-tentative-initial-attempt-at-re-work-for-new-playbin.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 90b9271771927a72dc27e71957376dd67c8f6d43 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= -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 ---- - 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 -+#ifndef AVMEDIA_GST_0_10 -+# include -+#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(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(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 - diff --git a/0002-gstreamer-make-gstreamer-1.0-and-0.10-dual-compile.patch b/0002-gstreamer-make-gstreamer-1.0-and-0.10-dual-compile.patch deleted file mode 100644 index fd18fc9..0000000 --- a/0002-gstreamer-make-gstreamer-1.0-and-0.10-dual-compile.patch +++ /dev/null @@ -1,832 +0,0 @@ -From a3f96fb4ddcc657f4448089eff07531735f23979 Mon Sep 17 00:00:00 2001 -From: Michael Meeks -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 @@ -+ -+ -+ -+ -+ -+ -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 -+#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(a), (b) ) -+#define GST_VIDEO_OVERLAY(a) reinterpret_cast(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 - #include - -- - #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 - diff --git a/0002-rework-selection-of-transformer-for-an-XSLT-filter.patch b/0002-rework-selection-of-transformer-for-an-XSLT-filter.patch deleted file mode 100644 index 3ddfbf4..0000000 --- a/0002-rework-selection-of-transformer-for-an-XSLT-filter.patch +++ /dev/null @@ -1,730 +0,0 @@ -From f05438dda954965651f332b2f7ee97dbdd951b98 Mon Sep 17 00:00:00 2001 -From: David Tardon -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& params) -+ LibXSLTTransformer::initialize(const Sequence& args) - throw (RuntimeException) - { -+ Sequence 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 - #include --#include -+#include - #include - - #include -@@ -51,14 +51,12 @@ - - #include - -+#include - #include - #include --#include --#include --#include - #include --#include - #include -+#include - - 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 -+ class LibXSLTTransformer : public WeakImplHelper1 - { - 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 m_rServiceFactory; -+ com::sun::star::uno::Reference m_rServiceFactory; - - com::sun::star::uno::Reference m_rInputStream; - -@@ -129,7 +125,7 @@ namespace XSLT - public: - - // ctor... -- LibXSLTTransformer(const com::sun::star::uno::Reference &r); -+ LibXSLTTransformer(const com::sun::star::uno::Reference &r); - - // XActiveDataSink - virtual void SAL_CALL -@@ -169,7 +165,7 @@ namespace XSLT - ::std::map SAL_CALL - getParameters(); - -- virtual com::sun::star::uno::Reference SAL_CALL -+ virtual com::sun::star::uno::Reference 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 - #include - -+#include - #include - - #include -@@ -72,6 +73,8 @@ - #include - #include - #include -+#include -+#include - - #include - -@@ -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 -@@ -122,7 +121,7 @@ namespace XSLT - // DocumentHandler interface of the css::xml::sax::Writer service - css::uno::Reference m_rOutputStream; - -- css::uno::Reference m_tcontrol; -+ css::uno::Reference m_tcontrol; - - oslCondition m_cTransformed; - sal_Bool m_bTerminated; -@@ -135,6 +134,8 @@ namespace XSLT - OUString - expandUrl(const OUString&); - -+ css::uno::Reference impl_createTransformer(const rtl::OUString& rTransformer, const Sequence& rArgs); -+ - public: - - // ctor... -@@ -211,6 +212,43 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) - return sExpandedUrl; - } - -+ css::uno::Reference -+ XSLTFilter::impl_createTransformer(const rtl::OUString& rTransformer, const Sequence& rArgs) -+ { -+ css::uno::Reference 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 (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 (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 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 @@ - - - -- -- -+ -+ - - - -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 @@ - - - -- -+ - - -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 -+ -+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 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 -+ -+module com { module sun { module star { module xml { module xslt { -+ -+/** Get unspecified XSLT filter transformer. -+ -+

It is not safe to expect support for any features except XSLT 1.0 . -+ -+ @since LibreOffice 3.7 -+ */ -+service XSLTTransformer : XXSLTTransformer -+{ -+ create([in] sequence 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 -+#include -+#include -+#include -+ -+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 - diff --git a/0003-drop-saxon-based-XSLT-transformer.patch b/0003-drop-saxon-based-XSLT-transformer.patch deleted file mode 100644 index d856a95..0000000 --- a/0003-drop-saxon-based-XSLT-transformer.patch +++ /dev/null @@ -1,3001 +0,0 @@ -From 45928a0bf76f4cd59f4bcb20ac60057e4a786910 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Wed, 10 Oct 2012 17:33:30 +0200 -Subject: [PATCH 3/4] drop saxon-based XSLT transformer - -(cherry picked from commit bfc71eb03e2bc6f26d53f70b32f9a8937086808b) - -Conflicts: - filter/Jar_XSLTFilter.mk - filter/source/xsltfilter/XSLTFilter.jar.component - filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java - filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTFilterOLEExtracter.java - filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java - -Change-Id: I2cd4e0965452c376df8c5e43353fbdd6f62fb27d ---- - filter/Extension_xslt2_transformer.mk | 18 - - filter/Jar_XSLTFilter.mk | 45 - - filter/Module_filter.mk | 2 - - filter/source/xsltfilter/Manifest | 2 - - filter/source/xsltfilter/XSLTFilter.jar.component | 34 - - .../com/sun/star/comp/xsltfilter/Base64.java | 1835 -------------------- - .../comp/xsltfilter/XSLTFilterOLEExtracter.java | 395 ----- - .../sun/star/comp/xsltfilter/XSLTransformer.java | 506 ------ - 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 - - 12 files changed, 2880 deletions(-) - delete mode 100644 filter/Extension_xslt2_transformer.mk - delete mode 100644 filter/Jar_XSLTFilter.mk - delete mode 100644 filter/source/xsltfilter/Manifest - delete mode 100644 filter/source/xsltfilter/XSLTFilter.jar.component - delete mode 100644 filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java - delete mode 100644 filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTFilterOLEExtracter.java - delete mode 100644 filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java - delete mode 100644 filter/source/xsltfilter/components.rdb - delete mode 100644 filter/source/xsltfilter/description-en-US.txt - delete mode 100644 filter/source/xsltfilter/description.xml - delete mode 100644 filter/source/xsltfilter/manifest.xml - -diff --git a/filter/Extension_xslt2_transformer.mk b/filter/Extension_xslt2_transformer.mk -deleted file mode 100644 -index ab239d8..0000000 ---- a/filter/Extension_xslt2_transformer.mk -+++ /dev/null -@@ -1,18 +0,0 @@ --# -*- 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/Jar_XSLTFilter.mk b/filter/Jar_XSLTFilter.mk -deleted file mode 100644 -index 9522c26..0000000 ---- a/filter/Jar_XSLTFilter.mk -+++ /dev/null -@@ -1,45 +0,0 @@ --#*************************************************************** --# Licensed to the Apache Software Foundation (ASF) under one --# or more contributor license agreements. See the NOTICE file --# distributed with this work for additional information --# regarding copyright ownership. The ASF licenses this file --# to you under the Apache License, Version 2.0 (the --# "License"); you may not use this file except in compliance --# with the License. You may obtain a copy of the License at --# --# http://www.apache.org/licenses/LICENSE-2.0 --# --# Unless required by applicable law or agreed to in writing, --# software distributed under the License is distributed on an --# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --# KIND, either express or implied. See the License for the --# specific language governing permissions and limitations --# under the License. --#*************************************************************** -- --$(eval $(call gb_Jar_Jar,XSLTFilter)) -- --$(eval $(call gb_Jar_use_jars,XSLTFilter,\ -- $(OUTDIR)/bin/ridl.jar \ -- $(OUTDIR)/bin/unoil.jar \ -- $(OUTDIR)/bin/jurt.jar \ -- $(OUTDIR)/bin/juh.jar \ --)) -- --$(eval $(call gb_Jar_use_externals,XSLTFilter,saxon)) -- --$(eval $(call gb_Jar_set_componentfile,XSLTFilter,filter/source/xsltfilter/XSLTFilter.jar,OOO)) -- --$(eval $(call gb_Jar_set_manifest,XSLTFilter,$(SRCDIR)/filter/source/xsltfilter/Manifest)) -- --$(eval $(call gb_Jar_set_jarclasspath,XSLTFilter,saxon9.jar)) -- --$(eval $(call gb_Jar_set_packageroot,XSLTFilter,com)) -- --$(eval $(call gb_Jar_add_sourcefiles,XSLTFilter,\ -- filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64 \ -- filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTFilterOLEExtracter \ -- filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer \ --)) -- --# vim: set noet sw=4 ts=4: -diff --git a/filter/Module_filter.mk b/filter/Module_filter.mk -index 9c18157..c372862 100644 ---- a/filter/Module_filter.mk -+++ b/filter/Module_filter.mk -@@ -72,8 +72,6 @@ $(eval $(call gb_Module_add_targets,filter,\ - - ifneq ($(SOLAR_JAVA),) - $(eval $(call gb_Module_add_targets,filter,\ -- Extension_xslt2_transformer \ -- Jar_XSLTFilter \ - Jar_XSLTValidate \ - )) - endif -diff --git a/filter/source/xsltfilter/Manifest b/filter/source/xsltfilter/Manifest -deleted file mode 100644 -index 1bd3102..0000000 ---- a/filter/source/xsltfilter/Manifest -+++ /dev/null -@@ -1,2 +0,0 @@ --RegistrationClassName: com.sun.star.comp.xsltfilter.XSLTransformer --UNO-Type-Path: -diff --git a/filter/source/xsltfilter/XSLTFilter.jar.component b/filter/source/xsltfilter/XSLTFilter.jar.component -deleted file mode 100644 -index d4ecd66..0000000 ---- a/filter/source/xsltfilter/XSLTFilter.jar.component -+++ /dev/null -@@ -1,34 +0,0 @@ -- -- -- -- -- -- -- -- -diff --git a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java -deleted file mode 100644 -index f92012e..0000000 ---- a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java -+++ /dev/null -@@ -1,1835 +0,0 @@ --package com.sun.star.comp.xsltfilter; -- --/************************************************************************ -- * -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * Copyright 2000, 2010 Oracle and/or its affiliates. -- * -- * OpenOffice.org - a multi-platform office productivity suite -- * -- * This file is part of OpenOffice.org. -- * -- * OpenOffice.org is free software: you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License version 3 -- * only, as published by the Free Software Foundation. -- * -- * OpenOffice.org is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU Lesser General Public License version 3 for more details -- * (a copy is included in the LICENSE file that accompanied this code). -- * -- * You should have received a copy of the GNU Lesser General Public License -- * version 3 along with OpenOffice.org. If not, see -- * -- * for a copy of the LGPLv3 License. -- * -- ************************************************************************/ --/** -- *

Encodes and decodes to and from Base64 notation.

-- *

Homepage: http://iharder.net/base64.

-- * -- *

The options parameter, which appears in a few places, is used to pass -- * several pieces of information to the encoder. In the "higher level" methods such as -- * encodeBytes( bytes, options ) the options parameter can be used to indicate such -- * things as first gzipping the bytes before encoding them, not inserting linefeeds -- * (though that breaks strict Base64 compatibility), and encoding using the URL-safe -- * and Ordered dialects.

-- * -- *

The constants defined in Base64 can be OR-ed together to combine options, so you -- * might make a call like this:

-- * -- * String encoded = Base64.encodeBytes( mybytes, Base64.GZIP | Base64.DONT_BREAK_LINES ); -- * -- *

to compress the data before encoding it and then making the output have no newline characters.

-- * -- * -- *

-- * Change Log: -- *

-- *
    -- *
  • v2.2.2 - Fixed encodeFileToFile and decodeFileToFile to use the -- * Base64.InputStream class to encode and decode on the fly which uses -- * less memory than encoding/decoding an entire file into memory before writing.
  • -- *
  • v2.2.1 - Fixed bug using URL_SAFE and ORDERED encodings. Fixed bug -- * when using very small files (~< 40 bytes).
  • -- *
  • v2.2 - Added some helper methods for encoding/decoding directly from -- * one file to the next. Also added a main() method to support command line -- * encoding/decoding from one file to the next. Also added these Base64 dialects: -- *
      -- *
    1. The default is RFC3548 format.
    2. -- *
    3. Calling Base64.setFormat(Base64.BASE64_FORMAT.URLSAFE_FORMAT) generates -- * URL and file name friendly format as described in Section 4 of RFC3548. -- * http://www.faqs.org/rfcs/rfc3548.html
    4. -- *
    5. Calling Base64.setFormat(Base64.BASE64_FORMAT.ORDERED_FORMAT) generates -- * URL and file name friendly format that preserves lexical ordering as described -- * in http://www.faqs.org/qa/rfcc-1940.html
    6. -- *
    -- * Special thanks to Jim Kellerman at http://www.powerset.com/ -- * for contributing the new Base64 dialects. -- *
  • -- * -- *
  • v2.1 - Cleaned up javadoc comments and unused variables and methods. Added -- * some convenience methods for reading and writing to and from files.
  • -- *
  • v2.0.2 - Now specifies UTF-8 encoding in places where the code fails on systems -- * with other encodings (like EBCDIC).
  • -- *
  • v2.0.1 - Fixed an error when decoding a single byte, that is, when the -- * encoded data was a single byte.
  • -- *
  • v2.0 - I got rid of methods that used booleans to set options. -- * Now everything is more consolidated and cleaner. The code now detects -- * when data that's being decoded is gzip-compressed and will decompress it -- * automatically. Generally things are cleaner. You'll probably have to -- * change some method calls that you were making to support the new -- * options format (ints that you "OR" together).
  • -- *
  • v1.5.1 - Fixed bug when decompressing and decoding to a -- * byte[] using decode( String s, boolean gzipCompressed ). -- * Added the ability to "suspend" encoding in the Output Stream so -- * you can turn on and off the encoding if you need to embed base64 -- * data in an otherwise "normal" stream (like an XML file).
  • -- *
  • v1.5 - Output stream pases on flush() command but doesn't do anything itself. -- * This helps when using GZIP streams. -- * Added the ability to GZip-compress objects before encoding them.
  • -- *
  • v1.4 - Added helper methods to read/write files.
  • -- *
  • v1.3.6 - Fixed OutputStream.flush() so that 'position' is reset.
  • -- *
  • v1.3.5 - Added flag to turn on and off line breaks. Fixed bug in input stream -- * where last buffer being read, if not completely full, was not returned.
  • -- *
  • v1.3.4 - Fixed when "improperly padded stream" error was thrown at the wrong time.
  • -- *
  • v1.3.3 - Fixed I/O streams which were totally messed up.
  • -- *
-- * -- *

-- * I am placing this code in the Public Domain. Do with it as you will. -- * This software comes with no guarantees or warranties but with -- * plenty of well-wishing instead! -- * Please visit http://iharder.net/base64 -- * periodically to check for updates or to contribute improvements. -- *

-- * -- * @author Robert Harder -- * @author rob@iharder.net -- * @version 2.2.2 -- */ --public class Base64 --{ -- --/* ******** P U B L I C F I E L D S ******** */ -- -- -- /** No options specified. Value is zero. */ -- public final static int NO_OPTIONS = 0; -- -- /** Specify encoding. */ -- public final static int ENCODE = 1; -- -- -- /** Specify decoding. */ -- public final static int DECODE = 0; -- -- -- /** Specify that data should be gzip-compressed. */ -- public final static int GZIP = 2; -- -- -- /** Don't break lines when encoding (violates strict Base64 specification) */ -- public final static int DONT_BREAK_LINES = 8; -- -- /** -- * Encode using Base64-like encoding that is URL- and Filename-safe as described -- * in Section 4 of RFC3548: -- * http://www.faqs.org/rfcs/rfc3548.html. -- * It is important to note that data encoded this way is not officially valid Base64, -- * or at the very least should not be called Base64 without also specifying that is -- * was encoded using the URL- and Filename-safe dialect. -- */ -- public final static int URL_SAFE = 16; -- -- -- /** -- * Encode using the special "ordered" dialect of Base64 described here: -- * http://www.faqs.org/qa/rfcc-1940.html. -- */ -- public final static int ORDERED = 32; -- -- --/* ******** P R I V A T E F I E L D S ******** */ -- -- -- /** Maximum line length (76) of Base64 output. */ -- private final static int MAX_LINE_LENGTH = 76; -- -- -- /** The equals sign (=) as a byte. */ -- private final static byte EQUALS_SIGN = (byte)'='; -- -- -- /** The new line character (\n) as a byte. */ -- private final static byte NEW_LINE = (byte)'\n'; -- -- -- /** Preferred encoding. */ -- private final static String PREFERRED_ENCODING = "UTF-8"; -- -- -- // I think I end up not using the BAD_ENCODING indicator. -- //private final static byte BAD_ENCODING = -9; // Indicates error in encoding -- private final static byte WHITE_SPACE_ENC = -5; // Indicates white space in encoding -- private final static byte EQUALS_SIGN_ENC = -1; // Indicates equals sign in encoding -- -- --/* ******** S T A N D A R D B A S E 6 4 A L P H A B E T ******** */ -- -- /** The 64 valid Base64 values. */ -- //private final static byte[] ALPHABET; -- /* Host platform me be something funny like EBCDIC, so we hardcode these values. */ -- private final static byte[] _STANDARD_ALPHABET = -- { -- (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G', -- (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N', -- (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U', -- (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z', -- (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g', -- (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n', -- (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u', -- (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z', -- (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', -- (byte)'6', (byte)'7', (byte)'8', (byte)'9', (byte)'+', (byte)'/' -- }; -- -- -- /** -- * Translates a Base64 value to either its 6-bit reconstruction value -- * or a negative number indicating some other meaning. -- **/ -- private final static byte[] _STANDARD_DECODABET = -- { -- -9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 0 - 8 -- -5,-5, // Whitespace: Tab and Linefeed -- -9,-9, // Decimal 11 - 12 -- -5, // Whitespace: Carriage Return -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 14 - 26 -- -9,-9,-9,-9,-9, // Decimal 27 - 31 -- -5, // Whitespace: Space -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 33 - 42 -- 62, // Plus sign at decimal 43 -- -9,-9,-9, // Decimal 44 - 46 -- 63, // Slash at decimal 47 -- 52,53,54,55,56,57,58,59,60,61, // Numbers zero through nine -- -9,-9,-9, // Decimal 58 - 60 -- -1, // Equals sign at decimal 61 -- -9,-9,-9, // Decimal 62 - 64 -- 0,1,2,3,4,5,6,7,8,9,10,11,12,13, // Letters 'A' through 'N' -- 14,15,16,17,18,19,20,21,22,23,24,25, // Letters 'O' through 'Z' -- -9,-9,-9,-9,-9,-9, // Decimal 91 - 96 -- 26,27,28,29,30,31,32,33,34,35,36,37,38, // Letters 'a' through 'm' -- 39,40,41,42,43,44,45,46,47,48,49,50,51, // Letters 'n' through 'z' -- -9,-9,-9,-9 // Decimal 123 - 126 -- /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 127 - 139 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 140 - 152 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 153 - 165 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 166 - 178 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 179 - 191 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 192 - 204 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 205 - 217 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 218 - 230 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 231 - 243 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9 // Decimal 244 - 255 */ -- }; -- -- --/* ******** U R L S A F E B A S E 6 4 A L P H A B E T ******** */ -- -- /** -- * Used in the URL- and Filename-safe dialect described in Section 4 of RFC3548: -- * http://www.faqs.org/rfcs/rfc3548.html. -- * Notice that the last two bytes become "hyphen" and "underscore" instead of "plus" and "slash." -- */ -- private final static byte[] _URL_SAFE_ALPHABET = -- { -- (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G', -- (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N', -- (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U', -- (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z', -- (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g', -- (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n', -- (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u', -- (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z', -- (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', (byte)'5', -- (byte)'6', (byte)'7', (byte)'8', (byte)'9', (byte)'-', (byte)'_' -- }; -- -- /** -- * Used in decoding URL- and Filename-safe dialects of Base64. -- */ -- private final static byte[] _URL_SAFE_DECODABET = -- { -- -9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 0 - 8 -- -5,-5, // Whitespace: Tab and Linefeed -- -9,-9, // Decimal 11 - 12 -- -5, // Whitespace: Carriage Return -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 14 - 26 -- -9,-9,-9,-9,-9, // Decimal 27 - 31 -- -5, // Whitespace: Space -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 33 - 42 -- -9, // Plus sign at decimal 43 -- -9, // Decimal 44 -- 62, // Minus sign at decimal 45 -- -9, // Decimal 46 -- -9, // Slash at decimal 47 -- 52,53,54,55,56,57,58,59,60,61, // Numbers zero through nine -- -9,-9,-9, // Decimal 58 - 60 -- -1, // Equals sign at decimal 61 -- -9,-9,-9, // Decimal 62 - 64 -- 0,1,2,3,4,5,6,7,8,9,10,11,12,13, // Letters 'A' through 'N' -- 14,15,16,17,18,19,20,21,22,23,24,25, // Letters 'O' through 'Z' -- -9,-9,-9,-9, // Decimal 91 - 94 -- 63, // Underscore at decimal 95 -- -9, // Decimal 96 -- 26,27,28,29,30,31,32,33,34,35,36,37,38, // Letters 'a' through 'm' -- 39,40,41,42,43,44,45,46,47,48,49,50,51, // Letters 'n' through 'z' -- -9,-9,-9,-9 // Decimal 123 - 126 -- /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 127 - 139 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 140 - 152 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 153 - 165 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 166 - 178 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 179 - 191 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 192 - 204 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 205 - 217 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 218 - 230 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 231 - 243 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9 // Decimal 244 - 255 */ -- }; -- -- -- --/* ******** O R D E R E D B A S E 6 4 A L P H A B E T ******** */ -- -- /** -- * I don't get the point of this technique, but it is described here: -- * http://www.faqs.org/qa/rfcc-1940.html. -- */ -- private final static byte[] _ORDERED_ALPHABET = -- { -- (byte)'-', -- (byte)'0', (byte)'1', (byte)'2', (byte)'3', (byte)'4', -- (byte)'5', (byte)'6', (byte)'7', (byte)'8', (byte)'9', -- (byte)'A', (byte)'B', (byte)'C', (byte)'D', (byte)'E', (byte)'F', (byte)'G', -- (byte)'H', (byte)'I', (byte)'J', (byte)'K', (byte)'L', (byte)'M', (byte)'N', -- (byte)'O', (byte)'P', (byte)'Q', (byte)'R', (byte)'S', (byte)'T', (byte)'U', -- (byte)'V', (byte)'W', (byte)'X', (byte)'Y', (byte)'Z', -- (byte)'_', -- (byte)'a', (byte)'b', (byte)'c', (byte)'d', (byte)'e', (byte)'f', (byte)'g', -- (byte)'h', (byte)'i', (byte)'j', (byte)'k', (byte)'l', (byte)'m', (byte)'n', -- (byte)'o', (byte)'p', (byte)'q', (byte)'r', (byte)'s', (byte)'t', (byte)'u', -- (byte)'v', (byte)'w', (byte)'x', (byte)'y', (byte)'z' -- }; -- -- /** -- * Used in decoding the "ordered" dialect of Base64. -- */ -- private final static byte[] _ORDERED_DECODABET = -- { -- -9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 0 - 8 -- -5,-5, // Whitespace: Tab and Linefeed -- -9,-9, // Decimal 11 - 12 -- -5, // Whitespace: Carriage Return -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 14 - 26 -- -9,-9,-9,-9,-9, // Decimal 27 - 31 -- -5, // Whitespace: Space -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 33 - 42 -- -9, // Plus sign at decimal 43 -- -9, // Decimal 44 -- 0, // Minus sign at decimal 45 -- -9, // Decimal 46 -- -9, // Slash at decimal 47 -- 1,2,3,4,5,6,7,8,9,10, // Numbers zero through nine -- -9,-9,-9, // Decimal 58 - 60 -- -1, // Equals sign at decimal 61 -- -9,-9,-9, // Decimal 62 - 64 -- 11,12,13,14,15,16,17,18,19,20,21,22,23, // Letters 'A' through 'M' -- 24,25,26,27,28,29,30,31,32,33,34,35,36, // Letters 'N' through 'Z' -- -9,-9,-9,-9, // Decimal 91 - 94 -- 37, // Underscore at decimal 95 -- -9, // Decimal 96 -- 38,39,40,41,42,43,44,45,46,47,48,49,50, // Letters 'a' through 'm' -- 51,52,53,54,55,56,57,58,59,60,61,62,63, // Letters 'n' through 'z' -- -9,-9,-9,-9 // Decimal 123 - 126 -- /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 127 - 139 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 140 - 152 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 153 - 165 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 166 - 178 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 179 - 191 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 192 - 204 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 205 - 217 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 218 - 230 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9, // Decimal 231 - 243 -- -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9 // Decimal 244 - 255 */ -- }; -- -- --/* ******** D E T E R M I N E W H I C H A L H A B E T ******** */ -- -- -- /** -- * Returns one of the _SOMETHING_ALPHABET byte arrays depending on -- * the options specified. -- * It's possible, though silly, to specify ORDERED and URLSAFE -- * in which case one of them will be picked, though there is -- * no guarantee as to which one will be picked. -- */ -- private final static byte[] getAlphabet( int options ) -- { -- if( (options & URL_SAFE) == URL_SAFE ) return _URL_SAFE_ALPHABET; -- else if( (options & ORDERED) == ORDERED ) return _ORDERED_ALPHABET; -- else return _STANDARD_ALPHABET; -- -- } // end getAlphabet -- -- -- /** -- * Returns one of the _SOMETHING_DECODABET byte arrays depending on -- * the options specified. -- * It's possible, though silly, to specify ORDERED and URL_SAFE -- * in which case one of them will be picked, though there is -- * no guarantee as to which one will be picked. -- */ -- private final static byte[] getDecodabet( int options ) -- { -- if( (options & URL_SAFE) == URL_SAFE ) return _URL_SAFE_DECODABET; -- else if( (options & ORDERED) == ORDERED ) return _ORDERED_DECODABET; -- else return _STANDARD_DECODABET; -- -- } // end getAlphabet -- -- -- -- /** Defeats instantiation. */ -- private Base64(){} -- -- -- /** -- * Encodes or decodes two files from the command line; -- * feel free to delete this method (in fact you probably should) -- * if you're embedding this code into a larger program. -- */ -- public final static void main( String[] args ) -- { -- if( args.length < 3 ){ -- usage("Not enough arguments."); -- } // end if: args.length < 3 -- else { -- String flag = args[0]; -- String infile = args[1]; -- String outfile = args[2]; -- if( flag.equals( "-e" ) ){ -- Base64.encodeFileToFile( infile, outfile ); -- } // end if: encode -- else if( flag.equals( "-d" ) ) { -- Base64.decodeFileToFile( infile, outfile ); -- } // end else if: decode -- else { -- usage( "Unknown flag: " + flag ); -- } // end else -- } // end else -- } // end main -- -- /** -- * Prints command line usage. -- * -- * @param msg A message to include with usage info. -- */ -- private final static void usage( String msg ) -- { -- System.err.println( msg ); -- System.err.println( "Usage: java Base64 -e|-d inputfile outputfile" ); -- } // end usage -- -- --/* ******** E N C O D I N G M E T H O D S ******** */ -- -- -- /** -- * Encodes up to the first three bytes of array threeBytes -- * and returns a four-byte array in Base64 notation. -- * The actual number of significant bytes in your array is -- * given by numSigBytes. -- * The array threeBytes needs only be as big as -- * numSigBytes. -- * Code can reuse a byte array by passing a four-byte array as b4. -- * -- * @param b4 A reusable byte array to reduce array instantiation -- * @param threeBytes the array to convert -- * @param numSigBytes the number of significant bytes in your array -- * @return four byte array in Base64 notation. -- * @since 1.5.1 -- */ -- private static byte[] encode3to4( byte[] b4, byte[] threeBytes, int numSigBytes, int options ) -- { -- encode3to4( threeBytes, 0, numSigBytes, b4, 0, options ); -- return b4; -- } // end encode3to4 -- -- -- /** -- *

Encodes up to three bytes of the array source -- * and writes the resulting four Base64 bytes to destination. -- * The source and destination arrays can be manipulated -- * anywhere along their length by specifying -- * srcOffset and destOffset. -- * This method does not check to make sure your arrays -- * are large enough to accomodate srcOffset + 3 for -- * the source array or destOffset + 4 for -- * the destination array. -- * The actual number of significant bytes in your array is -- * given by numSigBytes.

-- *

This is the lowest level of the encoding methods with -- * all possible parameters.

-- * -- * @param source the array to convert -- * @param srcOffset the index where conversion begins -- * @param numSigBytes the number of significant bytes in your array -- * @param destination the array to hold the conversion -- * @param destOffset the index where output will be put -- * @return the destination array -- * @since 1.3 -- */ -- private static byte[] encode3to4( -- byte[] source, int srcOffset, int numSigBytes, -- byte[] destination, int destOffset, int options ) -- { -- byte[] ALPHABET = getAlphabet( options ); -- -- // 1 2 3 -- // 01234567890123456789012345678901 Bit position -- // --------000000001111111122222222 Array position from threeBytes -- // --------| || || || | Six bit groups to index ALPHABET -- // >>18 >>12 >> 6 >> 0 Right shift necessary -- // 0x3f 0x3f 0x3f Additional AND -- -- // Create buffer with zero-padding if there are only one or two -- // significant bytes passed in the array. -- // We have to shift left 24 in order to flush out the 1's that appear -- // when Java treats a value as negative that is cast from a byte to an int. -- int inBuff = ( numSigBytes > 0 ? ((source[ srcOffset ] << 24) >>> 8) : 0 ) -- | ( numSigBytes > 1 ? ((source[ srcOffset + 1 ] << 24) >>> 16) : 0 ) -- | ( numSigBytes > 2 ? ((source[ srcOffset + 2 ] << 24) >>> 24) : 0 ); -- -- switch( numSigBytes ) -- { -- case 3: -- destination[ destOffset ] = ALPHABET[ (inBuff >>> 18) ]; -- destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ]; -- destination[ destOffset + 2 ] = ALPHABET[ (inBuff >>> 6) & 0x3f ]; -- destination[ destOffset + 3 ] = ALPHABET[ (inBuff ) & 0x3f ]; -- return destination; -- -- case 2: -- destination[ destOffset ] = ALPHABET[ (inBuff >>> 18) ]; -- destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ]; -- destination[ destOffset + 2 ] = ALPHABET[ (inBuff >>> 6) & 0x3f ]; -- destination[ destOffset + 3 ] = EQUALS_SIGN; -- return destination; -- -- case 1: -- destination[ destOffset ] = ALPHABET[ (inBuff >>> 18) ]; -- destination[ destOffset + 1 ] = ALPHABET[ (inBuff >>> 12) & 0x3f ]; -- destination[ destOffset + 2 ] = EQUALS_SIGN; -- destination[ destOffset + 3 ] = EQUALS_SIGN; -- return destination; -- -- default: -- return destination; -- } // end switch -- } // end encode3to4 -- -- -- -- /** -- * Serializes an object and returns the Base64-encoded -- * version of that serialized object. If the object -- * cannot be serialized or there is another error, -- * the method will return null. -- * The object is not GZip-compressed before being encoded. -- * -- * @param serializableObject The object to encode -- * @return The Base64-encoded object -- * @since 1.4 -- */ -- public static String encodeObject( java.io.Serializable serializableObject ) -- { -- return encodeObject( serializableObject, NO_OPTIONS ); -- } // end encodeObject -- -- -- -- /** -- * Serializes an object and returns the Base64-encoded -- * version of that serialized object. If the object -- * cannot be serialized or there is another error, -- * the method will return null. -- *

-- * Valid options:

--     *   GZIP: gzip-compresses object before encoding it.
--     *   DONT_BREAK_LINES: don't break lines at 76 characters
--     *     Note: Technically, this makes your encoding non-compliant.
--     * 
-- *

-- * Example: encodeObject( myObj, Base64.GZIP ) or -- *

-- * Example: encodeObject( myObj, Base64.GZIP | Base64.DONT_BREAK_LINES ) -- * -- * @param serializableObject The object to encode -- * @param options Specified options -- * @return The Base64-encoded object -- * @see Base64#GZIP -- * @see Base64#DONT_BREAK_LINES -- * @since 2.0 -- */ -- public static String encodeObject( java.io.Serializable serializableObject, int options ) -- { -- // Streams -- java.io.ByteArrayOutputStream baos = null; -- java.io.OutputStream b64os = null; -- java.io.ObjectOutputStream oos = null; -- java.util.zip.GZIPOutputStream gzos = null; -- -- // Isolate options -- int gzip = (options & GZIP); -- int dontBreakLines = (options & DONT_BREAK_LINES); -- -- try -- { -- // ObjectOutputStream -> (GZIP) -> Base64 -> ByteArrayOutputStream -- baos = new java.io.ByteArrayOutputStream(); -- b64os = new Base64.OutputStream( baos, ENCODE | options ); -- -- // GZip? -- if( gzip == GZIP ) -- { -- gzos = new java.util.zip.GZIPOutputStream( b64os ); -- oos = new java.io.ObjectOutputStream( gzos ); -- } // end if: gzip -- else -- oos = new java.io.ObjectOutputStream( b64os ); -- -- oos.writeObject( serializableObject ); -- } // end try -- catch( java.io.IOException e ) -- { -- e.printStackTrace(); -- return null; -- } // end catch -- finally -- { -- try{ oos.close(); } catch( Exception e ){} -- try{ gzos.close(); } catch( Exception e ){} -- try{ b64os.close(); } catch( Exception e ){} -- try{ baos.close(); } catch( Exception e ){} -- } // end finally -- -- // Return value according to relevant encoding. -- try -- { -- return new String( baos.toByteArray(), PREFERRED_ENCODING ); -- } // end try -- catch (java.io.UnsupportedEncodingException uue) -- { -- return new String( baos.toByteArray() ); -- } // end catch -- -- } // end encode -- -- -- -- /** -- * Encodes a byte array into Base64 notation. -- * Does not GZip-compress data. -- * -- * @param source The data to convert -- * @since 1.4 -- */ -- public static String encodeBytes( byte[] source ) -- { -- return encodeBytes( source, 0, source.length, NO_OPTIONS ); -- } // end encodeBytes -- -- -- -- /** -- * Encodes a byte array into Base64 notation. -- *

-- * Valid options:

--     *   GZIP: gzip-compresses object before encoding it.
--     *   DONT_BREAK_LINES: don't break lines at 76 characters
--     *     Note: Technically, this makes your encoding non-compliant.
--     * 
-- *

-- * Example: encodeBytes( myData, Base64.GZIP ) or -- *

-- * Example: encodeBytes( myData, Base64.GZIP | Base64.DONT_BREAK_LINES ) -- * -- * -- * @param source The data to convert -- * @param options Specified options -- * @see Base64#GZIP -- * @see Base64#DONT_BREAK_LINES -- * @since 2.0 -- */ -- public static String encodeBytes( byte[] source, int options ) -- { -- return encodeBytes( source, 0, source.length, options ); -- } // end encodeBytes -- -- -- /** -- * Encodes a byte array into Base64 notation. -- * Does not GZip-compress data. -- * -- * @param source The data to convert -- * @param off Offset in array where conversion should begin -- * @param len Length of data to convert -- * @since 1.4 -- */ -- public static String encodeBytes( byte[] source, int off, int len ) -- { -- return encodeBytes( source, off, len, NO_OPTIONS ); -- } // end encodeBytes -- -- -- -- /** -- * Encodes a byte array into Base64 notation. -- *

-- * Valid options:

--     *   GZIP: gzip-compresses object before encoding it.
--     *   DONT_BREAK_LINES: don't break lines at 76 characters
--     *     Note: Technically, this makes your encoding non-compliant.
--     * 
-- *

-- * Example: encodeBytes( myData, Base64.GZIP ) or -- *

-- * Example: encodeBytes( myData, Base64.GZIP | Base64.DONT_BREAK_LINES ) -- * -- * -- * @param source The data to convert -- * @param off Offset in array where conversion should begin -- * @param len Length of data to convert -- * @param options Specified options -- * @param options alphabet type is pulled from this (standard, url-safe, ordered) -- * @see Base64#GZIP -- * @see Base64#DONT_BREAK_LINES -- * @since 2.0 -- */ -- public static String encodeBytes( byte[] source, int off, int len, int options ) -- { -- // Isolate options -- int dontBreakLines = ( options & DONT_BREAK_LINES ); -- int gzip = ( options & GZIP ); -- -- // Compress? -- if( gzip == GZIP ) -- { -- java.io.ByteArrayOutputStream baos = null; -- java.util.zip.GZIPOutputStream gzos = null; -- Base64.OutputStream b64os = null; -- -- -- try -- { -- // GZip -> Base64 -> ByteArray -- baos = new java.io.ByteArrayOutputStream(); -- b64os = new Base64.OutputStream( baos, ENCODE | options ); -- gzos = new java.util.zip.GZIPOutputStream( b64os ); -- -- gzos.write( source, off, len ); -- gzos.close(); -- } // end try -- catch( java.io.IOException e ) -- { -- e.printStackTrace(); -- return null; -- } // end catch -- finally -- { -- try{ gzos.close(); } catch( Exception e ){} -- try{ b64os.close(); } catch( Exception e ){} -- try{ baos.close(); } catch( Exception e ){} -- } // end finally -- -- // Return value according to relevant encoding. -- try -- { -- return new String( baos.toByteArray(), PREFERRED_ENCODING ); -- } // end try -- catch (java.io.UnsupportedEncodingException uue) -- { -- return new String( baos.toByteArray() ); -- } // end catch -- } // end if: compress -- -- // Else, don't compress. Better not to use streams at all then. -- else -- { -- // Convert option to boolean in way that code likes it. -- boolean breakLines = dontBreakLines == 0; -- -- int len43 = len * 4 / 3; -- byte[] outBuff = new byte[ ( len43 ) // Main 4:3 -- + ( (len % 3) > 0 ? 4 : 0 ) // Account for padding -- + (breakLines ? ( len43 / MAX_LINE_LENGTH ) : 0) ]; // New lines -- int d = 0; -- int e = 0; -- int len2 = len - 2; -- int lineLength = 0; -- for( ; d < len2; d+=3, e+=4 ) -- { -- encode3to4( source, d+off, 3, outBuff, e, options ); -- -- lineLength += 4; -- if( breakLines && lineLength == MAX_LINE_LENGTH ) -- { -- outBuff[e+4] = NEW_LINE; -- e++; -- lineLength = 0; -- } // end if: end of line -- } // en dfor: each piece of array -- -- if( d < len ) -- { -- encode3to4( source, d+off, len - d, outBuff, e, options ); -- e += 4; -- } // end if: some padding needed -- -- -- // Return value according to relevant encoding. -- try -- { -- return new String( outBuff, 0, e, PREFERRED_ENCODING ); -- } // end try -- catch (java.io.UnsupportedEncodingException uue) -- { -- return new String( outBuff, 0, e ); -- } // end catch -- -- } // end else: don't compress -- -- } // end encodeBytes -- -- -- -- -- --/* ******** D E C O D I N G M E T H O D S ******** */ -- -- -- /** -- * Decodes four bytes from array source -- * and writes the resulting bytes (up to three of them) -- * to destination. -- * The source and destination arrays can be manipulated -- * anywhere along their length by specifying -- * srcOffset and destOffset. -- * This method does not check to make sure your arrays -- * are large enough to accomodate srcOffset + 4 for -- * the source array or destOffset + 3 for -- * the destination array. -- * This method returns the actual number of bytes that -- * were converted from the Base64 encoding. -- *

This is the lowest level of the decoding methods with -- * all possible parameters.

-- * -- * -- * @param source the array to convert -- * @param srcOffset the index where conversion begins -- * @param destination the array to hold the conversion -- * @param destOffset the index where output will be put -- * @param options alphabet type is pulled from this (standard, url-safe, ordered) -- * @return the number of decoded bytes converted -- * @since 1.3 -- */ -- private static int decode4to3( byte[] source, int srcOffset, byte[] destination, int destOffset, int options ) -- { -- byte[] DECODABET = getDecodabet( options ); -- -- // Example: Dk== -- if( source[ srcOffset + 2] == EQUALS_SIGN ) -- { -- // Two ways to do the same thing. Don't know which way I like best. -- //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 ) -- // | ( ( DECODABET[ source[ srcOffset + 1] ] << 24 ) >>> 12 ); -- int outBuff = ( ( DECODABET[ source[ srcOffset ] ] & 0xFF ) << 18 ) -- | ( ( DECODABET[ source[ srcOffset + 1] ] & 0xFF ) << 12 ); -- -- destination[ destOffset ] = (byte)( outBuff >>> 16 ); -- return 1; -- } -- -- // Example: DkL= -- else if( source[ srcOffset + 3 ] == EQUALS_SIGN ) -- { -- // Two ways to do the same thing. Don't know which way I like best. -- //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 ) -- // | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 ) -- // | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 ); -- int outBuff = ( ( DECODABET[ source[ srcOffset ] ] & 0xFF ) << 18 ) -- | ( ( DECODABET[ source[ srcOffset + 1 ] ] & 0xFF ) << 12 ) -- | ( ( DECODABET[ source[ srcOffset + 2 ] ] & 0xFF ) << 6 ); -- -- destination[ destOffset ] = (byte)( outBuff >>> 16 ); -- destination[ destOffset + 1 ] = (byte)( outBuff >>> 8 ); -- return 2; -- } -- -- // Example: DkLE -- else -- { -- try{ -- // Two ways to do the same thing. Don't know which way I like best. -- //int outBuff = ( ( DECODABET[ source[ srcOffset ] ] << 24 ) >>> 6 ) -- // | ( ( DECODABET[ source[ srcOffset + 1 ] ] << 24 ) >>> 12 ) -- // | ( ( DECODABET[ source[ srcOffset + 2 ] ] << 24 ) >>> 18 ) -- // | ( ( DECODABET[ source[ srcOffset + 3 ] ] << 24 ) >>> 24 ); -- int outBuff = ( ( DECODABET[ source[ srcOffset ] ] & 0xFF ) << 18 ) -- | ( ( DECODABET[ source[ srcOffset + 1 ] ] & 0xFF ) << 12 ) -- | ( ( DECODABET[ source[ srcOffset + 2 ] ] & 0xFF ) << 6) -- | ( ( DECODABET[ source[ srcOffset + 3 ] ] & 0xFF ) ); -- -- -- destination[ destOffset ] = (byte)( outBuff >> 16 ); -- destination[ destOffset + 1 ] = (byte)( outBuff >> 8 ); -- destination[ destOffset + 2 ] = (byte)( outBuff ); -- -- return 3; -- }catch( Exception e){ -- System.out.println(""+source[srcOffset]+ ": " + ( DECODABET[ source[ srcOffset ] ] ) ); -- System.out.println(""+source[srcOffset+1]+ ": " + ( DECODABET[ source[ srcOffset + 1 ] ] ) ); -- System.out.println(""+source[srcOffset+2]+ ": " + ( DECODABET[ source[ srcOffset + 2 ] ] ) ); -- System.out.println(""+source[srcOffset+3]+ ": " + ( DECODABET[ source[ srcOffset + 3 ] ] ) ); -- return -1; -- } // end catch -- } -- } // end decodeToBytes -- -- -- -- -- /** -- * Very low-level access to decoding ASCII characters in -- * the form of a byte array. Does not support automatically -- * gunzipping or any other "fancy" features. -- * -- * @param source The Base64 encoded data -- * @param off The offset of where to begin decoding -- * @param len The length of characters to decode -- * @return decoded data -- * @since 1.3 -- */ -- public static byte[] decode( byte[] source, int off, int len, int options ) -- { -- byte[] DECODABET = getDecodabet( options ); -- -- int len34 = len * 3 / 4; -- byte[] outBuff = new byte[ len34 ]; // Upper limit on size of output -- int outBuffPosn = 0; -- -- byte[] b4 = new byte[4]; -- int b4Posn = 0; -- int i = 0; -- byte sbiCrop = 0; -- byte sbiDecode = 0; -- for( i = off; i < off+len; i++ ) -- { -- sbiCrop = (byte)(source[i] & 0x7f); // Only the low seven bits -- sbiDecode = DECODABET[ sbiCrop ]; -- -- if( sbiDecode >= WHITE_SPACE_ENC ) // White space, Equals sign or better -- { -- if( sbiDecode >= EQUALS_SIGN_ENC ) -- { -- b4[ b4Posn++ ] = sbiCrop; -- if( b4Posn > 3 ) -- { -- outBuffPosn += decode4to3( b4, 0, outBuff, outBuffPosn, options ); -- b4Posn = 0; -- -- // If that was the equals sign, break out of 'for' loop -- if( sbiCrop == EQUALS_SIGN ) -- break; -- } // end if: quartet built -- -- } // end if: equals sign or better -- -- } // end if: white space, equals sign or better -- else -- { -- System.err.println( "Bad Base64 input character at " + i + ": " + source[i] + "(decimal)" ); -- return null; -- } // end else: -- } // each input character -- -- byte[] out = new byte[ outBuffPosn ]; -- System.arraycopy( outBuff, 0, out, 0, outBuffPosn ); -- return out; -- } // end decode -- -- -- -- -- /** -- * Decodes data from Base64 notation, automatically -- * detecting gzip-compressed data and decompressing it. -- * -- * @param s the string to decode -- * @return the decoded data -- * @since 1.4 -- */ -- public static byte[] decode( String s ) -- { -- return decode( s, NO_OPTIONS ); -- } -- -- -- /** -- * Decodes data from Base64 notation, automatically -- * detecting gzip-compressed data and decompressing it. -- * -- * @param s the string to decode -- * @param options encode options such as URL_SAFE -- * @return the decoded data -- * @since 1.4 -- */ -- public static byte[] decode( String s, int options ) -- { -- byte[] bytes; -- try -- { -- bytes = s.getBytes( PREFERRED_ENCODING ); -- } // end try -- catch( java.io.UnsupportedEncodingException uee ) -- { -- bytes = s.getBytes(); -- } // end catch -- // -- -- // Decode -- bytes = decode( bytes, 0, bytes.length, options ); -- -- -- // Check to see if it's gzip-compressed -- // GZIP Magic Two-Byte Number: 0x8b1f (35615) -- if( bytes != null && bytes.length >= 4 ) -- { -- -- int head = ((int)bytes[0] & 0xff) | ((bytes[1] << 8) & 0xff00); -- if( java.util.zip.GZIPInputStream.GZIP_MAGIC == head ) -- { -- java.io.ByteArrayInputStream bais = null; -- java.util.zip.GZIPInputStream gzis = null; -- java.io.ByteArrayOutputStream baos = null; -- byte[] buffer = new byte[2048]; -- int length = 0; -- -- try -- { -- baos = new java.io.ByteArrayOutputStream(); -- bais = new java.io.ByteArrayInputStream( bytes ); -- gzis = new java.util.zip.GZIPInputStream( bais ); -- -- while( ( length = gzis.read( buffer ) ) >= 0 ) -- { -- baos.write(buffer,0,length); -- } // end while: reading input -- -- // No error? Get new bytes. -- bytes = baos.toByteArray(); -- -- } // end try -- catch( java.io.IOException e ) -- { -- // Just return originally-decoded bytes -- } // end catch -- finally -- { -- try{ baos.close(); } catch( Exception e ){} -- try{ gzis.close(); } catch( Exception e ){} -- try{ bais.close(); } catch( Exception e ){} -- } // end finally -- -- } // end if: gzipped -- } // end if: bytes.length >= 2 -- -- return bytes; -- } // end decode -- -- -- -- -- /** -- * Attempts to decode Base64 data and deserialize a Java -- * Object within. Returns null if there was an error. -- * -- * @param encodedObject The Base64 data to decode -- * @return The decoded and deserialized object -- * @since 1.5 -- */ -- public static Object decodeToObject( String encodedObject ) -- { -- // Decode and gunzip if necessary -- byte[] objBytes = decode( encodedObject ); -- -- java.io.ByteArrayInputStream bais = null; -- java.io.ObjectInputStream ois = null; -- Object obj = null; -- -- try -- { -- bais = new java.io.ByteArrayInputStream( objBytes ); -- ois = new java.io.ObjectInputStream( bais ); -- -- obj = ois.readObject(); -- } // end try -- catch( java.io.IOException e ) -- { -- e.printStackTrace(); -- obj = null; -- } // end catch -- catch( java.lang.ClassNotFoundException e ) -- { -- e.printStackTrace(); -- obj = null; -- } // end catch -- finally -- { -- try{ bais.close(); } catch( Exception e ){} -- try{ ois.close(); } catch( Exception e ){} -- } // end finally -- -- return obj; -- } // end decodeObject -- -- -- -- /** -- * Convenience method for encoding data to a file. -- * -- * @param dataToEncode byte array of data to encode in base64 form -- * @param filename Filename for saving encoded data -- * @return true if successful, false otherwise -- * -- * @since 2.1 -- */ -- public static boolean encodeToFile( byte[] dataToEncode, String filename ) -- { -- boolean success = false; -- Base64.OutputStream bos = null; -- try -- { -- bos = new Base64.OutputStream( -- new java.io.FileOutputStream( filename ), Base64.ENCODE ); -- bos.write( dataToEncode ); -- success = true; -- } // end try -- catch( java.io.IOException e ) -- { -- -- success = false; -- } // end catch: IOException -- finally -- { -- try{ bos.close(); } catch( Exception e ){} -- } // end finally -- -- return success; -- } // end encodeToFile -- -- -- /** -- * Convenience method for decoding data to a file. -- * -- * @param dataToDecode Base64-encoded data as a string -- * @param filename Filename for saving decoded data -- * @return true if successful, false otherwise -- * -- * @since 2.1 -- */ -- public static boolean decodeToFile( String dataToDecode, String filename ) -- { -- boolean success = false; -- Base64.OutputStream bos = null; -- try -- { -- bos = new Base64.OutputStream( -- new java.io.FileOutputStream( filename ), Base64.DECODE ); -- bos.write( dataToDecode.getBytes( PREFERRED_ENCODING ) ); -- success = true; -- } // end try -- catch( java.io.IOException e ) -- { -- success = false; -- } // end catch: IOException -- finally -- { -- try{ bos.close(); } catch( Exception e ){} -- } // end finally -- -- return success; -- } // end decodeToFile -- -- -- -- -- /** -- * Convenience method for reading a base64-encoded -- * file and decoding it. -- * -- * @param filename Filename for reading encoded data -- * @return decoded byte array or null if unsuccessful -- * -- * @since 2.1 -- */ -- public static byte[] decodeFromFile( String filename ) -- { -- byte[] decodedData = null; -- Base64.InputStream bis = null; -- try -- { -- // Set up some useful variables -- java.io.File file = new java.io.File( filename ); -- byte[] buffer = null; -- int length = 0; -- int numBytes = 0; -- -- // Check for size of file -- if( file.length() > Integer.MAX_VALUE ) -- { -- System.err.println( "File is too big for this convenience method (" + file.length() + " bytes)." ); -- return null; -- } // end if: file too big for int index -- buffer = new byte[ (int)file.length() ]; -- -- // Open a stream -- bis = new Base64.InputStream( -- new java.io.BufferedInputStream( -- new java.io.FileInputStream( file ) ), Base64.DECODE ); -- -- // Read until done -- while( ( numBytes = bis.read( buffer, length, 4096 ) ) >= 0 ) -- length += numBytes; -- -- // Save in a variable to return -- decodedData = new byte[ length ]; -- System.arraycopy( buffer, 0, decodedData, 0, length ); -- -- } // end try -- catch( java.io.IOException e ) -- { -- System.err.println( "Error decoding from file " + filename ); -- } // end catch: IOException -- finally -- { -- try{ bis.close(); } catch( Exception e) {} -- } // end finally -- -- return decodedData; -- } // end decodeFromFile -- -- -- -- /** -- * Convenience method for reading a binary file -- * and base64-encoding it. -- * -- * @param filename Filename for reading binary data -- * @return base64-encoded string or null if unsuccessful -- * -- * @since 2.1 -- */ -- public static String encodeFromFile( String filename ) -- { -- String encodedData = null; -- Base64.InputStream bis = null; -- try -- { -- // Set up some useful variables -- java.io.File file = new java.io.File( filename ); -- byte[] buffer = new byte[ Math.max((int)(file.length() * 1.4),40) ]; // Need max() for math on small files (v2.2.1) -- int length = 0; -- int numBytes = 0; -- -- // Open a stream -- bis = new Base64.InputStream( -- new java.io.BufferedInputStream( -- new java.io.FileInputStream( file ) ), Base64.ENCODE ); -- -- // Read until done -- while( ( numBytes = bis.read( buffer, length, 4096 ) ) >= 0 ) -- length += numBytes; -- -- // Save in a variable to return -- encodedData = new String( buffer, 0, length, Base64.PREFERRED_ENCODING ); -- -- } // end try -- catch( java.io.IOException e ) -- { -- System.err.println( "Error encoding from file " + filename ); -- } // end catch: IOException -- finally -- { -- try{ bis.close(); } catch( Exception e) {} -- } // end finally -- -- return encodedData; -- } // end encodeFromFile -- -- -- -- -- /** -- * Reads infile and encodes it to outfile. -- * -- * @param infile Input file -- * @param outfile Output file -- * @return true if the operation is successful -- * @since 2.2 -- */ -- public static boolean encodeFileToFile( String infile, String outfile ) -- { -- boolean success = false; -- java.io.InputStream in = null; -- java.io.OutputStream out = null; -- try{ -- in = new Base64.InputStream( -- new java.io.BufferedInputStream( -- new java.io.FileInputStream( infile ) ), -- Base64.ENCODE ); -- out = new java.io.BufferedOutputStream( new java.io.FileOutputStream( outfile ) ); -- byte[] buffer = new byte[65536]; // 64K -- int read = -1; -- while( ( read = in.read(buffer) ) >= 0 ){ -- out.write( buffer,0,read ); -- } // end while: through file -- success = true; -- } catch( java.io.IOException exc ){ -- exc.printStackTrace(); -- } finally{ -- try{ in.close(); } catch( Exception exc ){} -- try{ out.close(); } catch( Exception exc ){} -- } // end finally -- -- return success; -- } // end encodeFileToFile -- -- -- -- /** -- * Reads infile and decodes it to outfile. -- * -- * @param infile Input file -- * @param outfile Output file -- * @return true if the operation is successful -- * @since 2.2 -- */ -- public static boolean decodeFileToFile( String infile, String outfile ) -- { -- boolean success = false; -- java.io.InputStream in = null; -- java.io.OutputStream out = null; -- try{ -- in = new Base64.InputStream( -- new java.io.BufferedInputStream( -- new java.io.FileInputStream( infile ) ), -- Base64.DECODE ); -- out = new java.io.BufferedOutputStream( new java.io.FileOutputStream( outfile ) ); -- byte[] buffer = new byte[65536]; // 64K -- int read = -1; -- while( ( read = in.read(buffer) ) >= 0 ){ -- out.write( buffer,0,read ); -- } // end while: through file -- success = true; -- } catch( java.io.IOException exc ){ -- exc.printStackTrace(); -- } finally{ -- try{ in.close(); } catch( Exception exc ){} -- try{ out.close(); } catch( Exception exc ){} -- } // end finally -- -- return success; -- } // end decodeFileToFile -- -- -- /* ******** I N N E R C L A S S I N P U T S T R E A M ******** */ -- -- -- -- /** -- * A {@link Base64.InputStream} will read data from another -- * java.io.InputStream, given in the constructor, -- * and encode/decode to/from Base64 notation on the fly. -- * -- * @see Base64 -- * @since 1.3 -- */ -- public static class InputStream extends java.io.FilterInputStream -- { -- private boolean encode; // Encoding or decoding -- private int position; // Current position in the buffer -- private byte[] buffer; // Small buffer holding converted data -- private int bufferLength; // Length of buffer (3 or 4) -- private int numSigBytes; // Number of meaningful bytes in the buffer -- private int lineLength; -- private boolean breakLines; // Break lines at less than 80 characters -- private int options; // Record options used to create the stream. -- private byte[] alphabet; // Local copies to avoid extra method calls -- private byte[] decodabet; // Local copies to avoid extra method calls -- -- -- /** -- * Constructs a {@link Base64.InputStream} in DECODE mode. -- * -- * @param in the java.io.InputStream from which to read data. -- * @since 1.3 -- */ -- public InputStream( java.io.InputStream in ) -- { -- this( in, DECODE ); -- } // end constructor -- -- -- /** -- * Constructs a {@link Base64.InputStream} in -- * either ENCODE or DECODE mode. -- *

-- * Valid options:

--         *   ENCODE or DECODE: Encode or Decode as data is read.
--         *   DONT_BREAK_LINES: don't break lines at 76 characters
--         *     (only meaningful when encoding)
--         *     Note: Technically, this makes your encoding non-compliant.
--         * 
-- *

-- * Example: new Base64.InputStream( in, Base64.DECODE ) -- * -- * -- * @param in the java.io.InputStream from which to read data. -- * @param options Specified options -- * @see Base64#ENCODE -- * @see Base64#DECODE -- * @see Base64#DONT_BREAK_LINES -- * @since 2.0 -- */ -- public InputStream( java.io.InputStream in, int options ) -- { -- super( in ); -- this.breakLines = (options & DONT_BREAK_LINES) != DONT_BREAK_LINES; -- this.encode = (options & ENCODE) == ENCODE; -- this.bufferLength = encode ? 4 : 3; -- this.buffer = new byte[ bufferLength ]; -- this.position = -1; -- this.lineLength = 0; -- this.options = options; // Record for later, mostly to determine which alphabet to use -- this.alphabet = getAlphabet(options); -- this.decodabet = getDecodabet(options); -- } // end constructor -- -- /** -- * Reads enough of the input stream to convert -- * to/from Base64 and returns the next byte. -- * -- * @return next byte -- * @since 1.3 -- */ -- public int read() throws java.io.IOException -- { -- // Do we need to get data? -- if( position < 0 ) -- { -- if( encode ) -- { -- byte[] b3 = new byte[3]; -- int numBinaryBytes = 0; -- for( int i = 0; i < 3; i++ ) -- { -- try -- { -- int b = in.read(); -- -- // If end of stream, b is -1. -- if( b >= 0 ) -- { -- b3[i] = (byte)b; -- numBinaryBytes++; -- } // end if: not end of stream -- -- } // end try: read -- catch( java.io.IOException e ) -- { -- // Only a problem if we got no data at all. -- if( i == 0 ) -- throw e; -- -- } // end catch -- } // end for: each needed input byte -- -- if( numBinaryBytes > 0 ) -- { -- encode3to4( b3, 0, numBinaryBytes, buffer, 0, options ); -- position = 0; -- numSigBytes = 4; -- } // end if: got data -- else -- { -- return -1; -- } // end else -- } // end if: encoding -- -- // Else decoding -- else -- { -- byte[] b4 = new byte[4]; -- int i = 0; -- for( i = 0; i < 4; i++ ) -- { -- // Read four "meaningful" bytes: -- int b = 0; -- do{ b = in.read(); } -- while( b >= 0 && decodabet[ b & 0x7f ] <= WHITE_SPACE_ENC ); -- -- if( b < 0 ) -- break; // Reads a -1 if end of stream -- -- b4[i] = (byte)b; -- } // end for: each needed input byte -- -- if( i == 4 ) -- { -- numSigBytes = decode4to3( b4, 0, buffer, 0, options ); -- position = 0; -- } // end if: got four characters -- else if( i == 0 ){ -- return -1; -- } // end else if: also padded correctly -- else -- { -- // Must have broken out from above. -- throw new java.io.IOException( "Improperly padded Base64 input." ); -- } // end -- -- } // end else: decode -- } // end else: get data -- -- // Got data? -- if( position >= 0 ) -- { -- // End of relevant data? -- if( /*!encode &&*/ position >= numSigBytes ) -- return -1; -- -- if( encode && breakLines && lineLength >= MAX_LINE_LENGTH ) -- { -- lineLength = 0; -- return '\n'; -- } // end if -- else -- { -- lineLength++; // This isn't important when decoding -- // but throwing an extra "if" seems -- // just as wasteful. -- -- int b = buffer[ position++ ]; -- -- if( position >= bufferLength ) -- position = -1; -- -- return b & 0xFF; // This is how you "cast" a byte that's -- // intended to be unsigned. -- } // end else -- } // end if: position >= 0 -- -- // Else error -- else -- { -- // When JDK1.4 is more accepted, use an assertion here. -- throw new java.io.IOException( "Error in Base64 code reading stream." ); -- } // end else -- } // end read -- -- -- /** -- * Calls {@link #read()} repeatedly until the end of stream -- * is reached or len bytes are read. -- * Returns number of bytes read into array or -1 if -- * end of stream is encountered. -- * -- * @param dest array to hold values -- * @param off offset for array -- * @param len max number of bytes to read into array -- * @return bytes read into array or -1 if end of stream is encountered. -- * @since 1.3 -- */ -- public int read( byte[] dest, int off, int len ) throws java.io.IOException -- { -- int i; -- int b; -- for( i = 0; i < len; i++ ) -- { -- b = read(); -- -- //if( b < 0 && i == 0 ) -- // return -1; -- -- if( b >= 0 ) -- dest[off + i] = (byte)b; -- else if( i == 0 ) -- return -1; -- else -- break; // Out of 'for' loop -- } // end for: each byte read -- return i; -- } // end read -- -- } // end inner class InputStream -- -- -- -- -- -- -- /* ******** I N N E R C L A S S O U T P U T S T R E A M ******** */ -- -- -- -- /** -- * A {@link Base64.OutputStream} will write data to another -- * java.io.OutputStream, given in the constructor, -- * and encode/decode to/from Base64 notation on the fly. -- * -- * @see Base64 -- * @since 1.3 -- */ -- public static class OutputStream extends java.io.FilterOutputStream -- { -- private boolean encode; -- private int position; -- private byte[] buffer; -- private int bufferLength; -- private int lineLength; -- private boolean breakLines; -- private byte[] b4; // Scratch used in a few places -- private boolean suspendEncoding; -- private int options; // Record for later -- private byte[] alphabet; // Local copies to avoid extra method calls -- private byte[] decodabet; // Local copies to avoid extra method calls -- -- /** -- * Constructs a {@link Base64.OutputStream} in ENCODE mode. -- * -- * @param out the java.io.OutputStream to which data will be written. -- * @since 1.3 -- */ -- public OutputStream( java.io.OutputStream out ) -- { -- this( out, ENCODE ); -- } // end constructor -- -- -- /** -- * Constructs a {@link Base64.OutputStream} in -- * either ENCODE or DECODE mode. -- *

-- * Valid options:

--         *   ENCODE or DECODE: Encode or Decode as data is read.
--         *   DONT_BREAK_LINES: don't break lines at 76 characters
--         *     (only meaningful when encoding)
--         *     Note: Technically, this makes your encoding non-compliant.
--         * 
-- *

-- * Example: new Base64.OutputStream( out, Base64.ENCODE ) -- * -- * @param out the java.io.OutputStream to which data will be written. -- * @param options Specified options. -- * @see Base64#ENCODE -- * @see Base64#DECODE -- * @see Base64#DONT_BREAK_LINES -- * @since 1.3 -- */ -- public OutputStream( java.io.OutputStream out, int options ) -- { -- super( out ); -- this.breakLines = (options & DONT_BREAK_LINES) != DONT_BREAK_LINES; -- this.encode = (options & ENCODE) == ENCODE; -- this.bufferLength = encode ? 3 : 4; -- this.buffer = new byte[ bufferLength ]; -- this.position = 0; -- this.lineLength = 0; -- this.suspendEncoding = false; -- this.b4 = new byte[4]; -- this.options = options; -- this.alphabet = getAlphabet(options); -- this.decodabet = getDecodabet(options); -- } // end constructor -- -- -- /** -- * Writes the byte to the output stream after -- * converting to/from Base64 notation. -- * When encoding, bytes are buffered three -- * at a time before the output stream actually -- * gets a write() call. -- * When decoding, bytes are buffered four -- * at a time. -- * -- * @param theByte the byte to write -- * @since 1.3 -- */ -- public void write(int theByte) throws java.io.IOException -- { -- // Encoding suspended? -- if( suspendEncoding ) -- { -- super.out.write( theByte ); -- return; -- } // end if: supsended -- -- // Encode? -- if( encode ) -- { -- buffer[ position++ ] = (byte)theByte; -- if( position >= bufferLength ) // Enough to encode. -- { -- out.write( encode3to4( b4, buffer, bufferLength, options ) ); -- -- lineLength += 4; -- if( breakLines && lineLength >= MAX_LINE_LENGTH ) -- { -- out.write( NEW_LINE ); -- lineLength = 0; -- } // end if: end of line -- -- position = 0; -- } // end if: enough to output -- } // end if: encoding -- -- // Else, Decoding -- else -- { -- // Meaningful Base64 character? -- if( decodabet[ theByte & 0x7f ] > WHITE_SPACE_ENC ) -- { -- buffer[ position++ ] = (byte)theByte; -- if( position >= bufferLength ) // Enough to output. -- { -- int len = Base64.decode4to3( buffer, 0, b4, 0, options ); -- out.write( b4, 0, len ); -- //out.write( Base64.decode4to3( buffer ) ); -- position = 0; -- } // end if: enough to output -- } // end if: meaningful base64 character -- else if( decodabet[ theByte & 0x7f ] != WHITE_SPACE_ENC ) -- { -- throw new java.io.IOException( "Invalid character in Base64 data." ); -- } // end else: not white space either -- } // end else: decoding -- } // end write -- -- -- -- /** -- * Calls {@link #write(int)} repeatedly until len -- * bytes are written. -- * -- * @param theBytes array from which to read bytes -- * @param off offset for array -- * @param len max number of bytes to read into array -- * @since 1.3 -- */ -- public void write( byte[] theBytes, int off, int len ) throws java.io.IOException -- { -- // Encoding suspended? -- if( suspendEncoding ) -- { -- super.out.write( theBytes, off, len ); -- return; -- } // end if: supsended -- -- for( int i = 0; i < len; i++ ) -- { -- write( theBytes[ off + i ] ); -- } // end for: each byte written -- -- } // end write -- -- -- -- /** -- * Method added by PHIL. [Thanks, PHIL. -Rob] -- * This pads the buffer without closing the stream. -- */ -- public void flushBase64() throws java.io.IOException -- { -- if( position > 0 ) -- { -- if( encode ) -- { -- out.write( encode3to4( b4, buffer, position, options ) ); -- position = 0; -- } // end if: encoding -- else -- { -- throw new java.io.IOException( "Base64 input not properly padded." ); -- } // end else: decoding -- } // end if: buffer partially full -- -- } // end flush -- -- -- /** -- * Flushes and closes (I think, in the superclass) the stream. -- * -- * @since 1.3 -- */ -- public void close() throws java.io.IOException -- { -- // 1. Ensure that pending characters are written -- flushBase64(); -- -- // 2. Actually close the stream -- // Base class both flushes and closes. -- super.close(); -- -- buffer = null; -- out = null; -- } // end close -- -- -- -- /** -- * Suspends encoding of the stream. -- * May be helpful if you need to embed a piece of -- * base640-encoded data in a stream. -- * -- * @since 1.5.1 -- */ -- public void suspendEncoding() throws java.io.IOException -- { -- flushBase64(); -- this.suspendEncoding = true; -- } // end suspendEncoding -- -- -- /** -- * Resumes encoding of the stream. -- * May be helpful if you need to embed a piece of -- * base640-encoded data in a stream. -- * -- * @since 1.5.1 -- */ -- public void resumeEncoding() -- { -- this.suspendEncoding = false; -- } // end resumeEncoding -- -- -- -- } // end inner class OutputStream -- -- --} // end class Base64 -diff --git a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTFilterOLEExtracter.java b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTFilterOLEExtracter.java -deleted file mode 100644 -index 078e031..0000000 ---- a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTFilterOLEExtracter.java -+++ /dev/null -@@ -1,395 +0,0 @@ --package com.sun.star.comp.xsltfilter; -- --/************************************************************************ -- * -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * Copyright 2000, 2010 Oracle and/or its affiliates. -- * -- * OpenOffice.org - a multi-platform office productivity suite -- * -- * This file is part of OpenOffice.org. -- * -- * OpenOffice.org is free software: you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License version 3 -- * only, as published by the Free Software Foundation. -- * -- * OpenOffice.org is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU Lesser General Public License version 3 for more details -- * (a copy is included in the LICENSE file that accompanied this code). -- * -- * You should have received a copy of the GNU Lesser General Public License -- * version 3 along with OpenOffice.org. If not, see -- * -- * for a copy of the LGPLv3 License. -- * -- ************************************************************************/ -- --//Standard Java classes --import java.io.FileWriter; --import java.util.zip.Inflater; --import java.util.zip.Deflater; -- --//StarOffice Interfaces and UNO --import com.sun.star.bridge.XBridgeFactory; --import com.sun.star.bridge.XBridge; --import com.sun.star.connection.XConnector; --import com.sun.star.connection.XConnection; --import com.sun.star.container.XNameContainer; --import com.sun.star.embed.XTransactedObject; --import com.sun.star.io.XStream; --import com.sun.star.io.XSeekable; --import com.sun.star.io.XInputStream; --import com.sun.star.io.XOutputStream; --import com.sun.star.lang.XMultiServiceFactory; --import com.sun.star.lang.XComponent; --import com.sun.star.uno.XComponentContext; --import com.sun.star.uno.UnoRuntime; -- --/** This class is an xalan extension class. It provider 2 elements -- * and 2 functions to used in xslt script. With this elements and functions -- * we can convert between oledata between Wordml and OOo flat. -- * To use it, we need a running OOo. There are two ways to get the XMultiServiceFactory. -- * When called by OOo xslt filter, an XMultiServiceFactory will be add to the transformer -- * by setParameter(), then we can get it using getParameter(). Another way is using an -- * XConnection to connect to a running OOo. We connect to a running OOo, we need know the -- * uno url. It can be set in the xslt script. The default uno url is: -- * "uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -- * see XSLTXalanOLEExtracter.java -- */ --public class XSLTFilterOLEExtracter { -- -- protected XMultiServiceFactory m_xMSF; -- protected XNameContainer m_Storage; -- protected XStream m_RootStream; -- protected XConnection m_Connection; -- protected String sConnectionString; -- private static final String UNO_URL = "uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager"; -- -- public XSLTFilterOLEExtracter() { -- } -- -- public void init(String unoUrl) { -- if (unoUrl == null || unoUrl.equals("")) { -- unoUrl = UNO_URL; -- } -- debugln("Init with uno url=" + unoUrl); -- if (null == m_xMSF) { -- try { -- m_xMSF = connectAwareGetServiceFactory(); -- } catch (Exception ex) { -- System.err.println("Could not connect to the office '" + unoUrl + "'\n" + ex.getMessage()); -- } -- } -- } -- -- public void exit() { -- m_Storage = null; -- m_xMSF = null; -- if (null != m_Connection) { -- try { -- m_Connection.close(); -- } catch (Exception ex) { -- System.err.println("Could not close connection to the office.\n" + ex.getMessage()); -- } -- } -- } -- //If aName = "oledata.mso" then we load the root storage from the given base64 string -- //Otherwise we compress the stream and add it to the root storage under the name of aName -- public void insertByName(String aName, String aBase64) { -- debugln("insertByName(" + aName + " : " + aBase64 + ")"); -- if (aName.equals("oledata.mso")) { -- loadRootStorageFromBase64(aBase64); -- } else { -- ensureCreateRootStorage(); -- insertSubStorage(aName, aBase64); -- } -- } -- //If aName = "oledata.mso" then we return the base64 encoded string of the root storage -- //Otherwise we return the base64 encoded string of the sub stream under the name of aName -- public String getByName(String aName) { -- if (aName.equals("oledata.mso")) { -- try { -- //get the length and seek to 0 -- XSeekable xSeek = (XSeekable) UnoRuntime.queryInterface(XSeekable.class, m_RootStream); -- int oleLength = (int) xSeek.getLength(); -- xSeek.seek(0); -- xSeek = null; -- //read all bytes -- XInputStream xInput = m_RootStream.getInputStream(); -- byte oledata[][] = new byte[1][oleLength]; -- xInput.readBytes(oledata, oleLength); -- //return the base64 encoded string -- return Base64.encodeBytes(oledata[0]); -- } catch (Exception ex) { -- ex.printStackTrace(); -- } -- } else { -- return getEncodedSubStorage(aName); -- } -- return ""; -- } -- //get the sub stream which name = aName, decompress it and return the base64 encoded string -- public String getEncodedSubStorage(String aName) { -- debugln("getByName(" + aName + ")"); -- try { -- if (!m_Storage.hasByName(aName)) { -- return "Not Found:" + aName; -- } -- Object oSubStream = m_Storage.getByName(aName); -- if (oSubStream == null) { -- return "Not Found:" + aName; -- } -- XInputStream xSubStream = (XInputStream) UnoRuntime.queryInterface(XInputStream.class, -- oSubStream); -- if (xSubStream == null) { -- return "Not Found:" + aName; -- } -- //The first four byte are the length of the uncompressed data -- byte pLength[][] = new byte[1][4]; -- XSeekable xSeek = (XSeekable) UnoRuntime.queryInterface(XSeekable.class, xSubStream); -- xSeek.seek(0); -- xSeek = null; -- //Get the uncompressed length -- int readbytes = xSubStream.readBytes(pLength, 4); -- if (4 != readbytes) { -- System.out.println("readbytes:" + readbytes); -- return "Can not read the length."; -- } -- int oleLength = (pLength[0][0] << 0) + (pLength[0][1] << 8) + (pLength[0][2] << 16) + (pLength[0][3] << 24); -- byte pContents[][] = new byte[1][oleLength]; -- //Read all bytes. The compressed length should less then the uncompressed length -- readbytes = xSubStream.readBytes(pContents, oleLength); -- if (oleLength < readbytes) { -- return "oleLength :" + oleLength + " readbytes: " + readbytes; -- } -- -- // Decompress the bytes -- Inflater decompresser = new Inflater(); -- decompresser.setInput(pContents[0], 0, readbytes); -- byte[] result = new byte[oleLength]; -- int resultLength = decompresser.inflate(result); -- decompresser.end(); -- -- //return the base64 string of the uncompressed data -- return Base64.encodeBytes(result); -- } catch (Exception ex) { -- ex.printStackTrace(); -- } -- return ""; -- } -- -- public XStream CreateTempFileStream(XMultiServiceFactory xMSF) { -- // try to get temporary file representation -- XStream xTempFileStream = null; -- try { -- Object oTempFile = xMSF.createInstance("com.sun.star.io.TempFile"); -- xTempFileStream = (XStream) UnoRuntime.queryInterface(XStream.class, oTempFile); -- } catch (Exception e) { -- } -- -- if (xTempFileStream == null) { -- System.out.println("Can't create temporary file!"); -- } -- -- return xTempFileStream; -- } -- //decode the base64 string and create an com.sun.star.embed.OLESimpleStorage from it -- public void loadRootStorageFromBase64(String aBase64) { -- try { -- //Decode and write the data to an temp stream -- byte[] oledata = Base64.decode(aBase64); -- m_RootStream = CreateTempFileStream(m_xMSF); -- XOutputStream xOutput = m_RootStream.getOutputStream(); -- xOutput.writeBytes(oledata); -- xOutput.flush(); -- //Get the input stream and seek to begin -- XInputStream xInput = m_RootStream.getInputStream(); -- XSeekable xSeek = (XSeekable) UnoRuntime.queryInterface(XSeekable.class, xInput); -- xSeek.seek(0); -- oledata = null; -- xSeek = null; -- -- //create an com.sun.star.embed.OLESimpleStorage from the temp stream -- Object pArgs[] = new Object[1]; -- pArgs[0] = (Object) xInput; -- Object oTempStorage = m_xMSF.createInstanceWithArguments("com.sun.star.embed.OLESimpleStorage", pArgs); -- pArgs = null; -- -- m_Storage = (XNameContainer) UnoRuntime.queryInterface(XNameContainer.class, oTempStorage); -- } catch (Exception e) { -- e.printStackTrace(); -- } -- } -- //Create a empty OLESimpleStorage if there is not one -- public void ensureCreateRootStorage() { -- if (null == m_RootStream || null == m_Storage) { -- try { -- m_RootStream = CreateTempFileStream(m_xMSF); -- -- Object pArgs[] = new Object[1]; -- pArgs[0] = (Object) m_RootStream; -- Object oTempStorage = m_xMSF.createInstanceWithArguments("com.sun.star.embed.OLESimpleStorage", pArgs); -- pArgs = null; -- -- m_Storage = (XNameContainer) UnoRuntime.queryInterface(XNameContainer.class, oTempStorage); -- } catch (Exception e) { -- e.printStackTrace(); -- } -- } -- } -- //decode the base64 string and insert the length and the compressed data of it to -- //the root storage as a sub stream under aName -- public void insertSubStorage(String aName, String aBase64) { -- try { -- //decode the base64 string -- byte[] oledata = Base64.decode(aBase64); -- //create a temp stream to write data to -- XStream subStream = CreateTempFileStream(m_xMSF); -- XInputStream xInput = subStream.getInputStream(); -- XOutputStream xOutput = subStream.getOutputStream(); -- //write the length to the temp stream -- byte oleHead[] = new byte[4]; -- oleHead[0] = (byte) ((oledata.length >>> 0) & 0xFF); -- oleHead[1] = (byte) ((oledata.length >>> 8) & 0xFF); -- oleHead[2] = (byte) ((oledata.length >>> 16) & 0xFF); -- oleHead[3] = (byte) ((oledata.length >>> 24) & 0xFF); -- xOutput.writeBytes(oleHead); -- -- // Compress the bytes -- byte[] output = new byte[oledata.length]; -- Deflater compresser = new Deflater(); -- compresser.setInput(oledata); -- compresser.finish(); -- int compressedDataLength = compresser.deflate(output); -- //realloc the data length -- byte[] compressedBytes = new byte[compressedDataLength]; -- for (int i = 0; i < compressedDataLength; i++) { -- compressedBytes[i] = output[i]; -- } -- -- //write the compressed data to the temp stream -- xOutput.writeBytes(compressedBytes); -- //seek to 0 -- XSeekable xSeek = (XSeekable) UnoRuntime.queryInterface(XSeekable.class, xInput); -- xSeek.seek(0); -- xSeek = null; -- oledata = null; -- -- //insert the temp stream as a sub stream and use an XTransactedObject to commit it immediately -- XTransactedObject xTransact = (XTransactedObject) UnoRuntime.queryInterface(XTransactedObject.class, m_Storage); -- m_Storage.insertByName(aName, xInput); -- xTransact.commit(); -- xTransact = null; -- -- } catch (Exception e) { -- e.printStackTrace(); -- } -- } -- -- /** separtates the uno-url into 3 different parts. -- */ -- protected static String[] parseUnoUrl(String url) { -- String[] aRet = new String[3]; -- -- if (!url.startsWith("uno:")) { -- return null; -- } -- -- int semicolon = url.indexOf(';'); -- if (semicolon == -1) { -- return null; -- } -- -- aRet[0] = url.substring(4, semicolon); -- int nextSemicolon = url.indexOf(';', semicolon + 1); -- -- if (semicolon == -1) { -- return null; -- } -- aRet[1] = url.substring(semicolon + 1, nextSemicolon); -- -- aRet[2] = url.substring(nextSemicolon + 1); -- return aRet; -- } -- //connect to running OOo and keep an XConnection object so that we can disconnect from OOo as we wish -- protected XMultiServiceFactory connectAwareGetServiceFactory() throws com.sun.star.uno.Exception, -- com.sun.star.uno.RuntimeException, -- Exception { -- -- // Get component context -- XComponentContext xComponentContext = -- com.sun.star.comp.helper.Bootstrap.createInitialComponentContext(null); -- -- // instantiate connector service -- Object x = xComponentContext.getServiceManager().createInstanceWithContext( -- "com.sun.star.connection.Connector", xComponentContext); -- -- XConnector xConnector = (XConnector) UnoRuntime.queryInterface(XConnector.class, x); -- -- String a[] = parseUnoUrl(sConnectionString); -- if (null == a) { -- throw new com.sun.star.uno.Exception("Couldn't parse uno-url " + sConnectionString); -- } -- -- // connect using the connection string part of the uno-url only. -- m_Connection = xConnector.connect(a[0]); -- -- x = xComponentContext.getServiceManager().createInstanceWithContext( -- "com.sun.star.bridge.BridgeFactory", xComponentContext); -- -- XBridgeFactory xBridgeFactory = (XBridgeFactory) UnoRuntime.queryInterface( -- XBridgeFactory.class, x); -- -- // create a nameless bridge with no instance provider -- // using the middle part of the uno-url -- XBridge bridge = xBridgeFactory.createBridge("", a[1], m_Connection, null); -- -- // query for the XComponent interface and add this as event listener -- XComponent xComponent = (XComponent) UnoRuntime.queryInterface( -- XComponent.class, bridge); -- -- // get the remote instance -- x = bridge.getInstance(a[2]); -- -- // Did the remote server export this object ? -- if (null == x) { -- throw new com.sun.star.uno.Exception( -- "Server didn't provide an instance for" + a[2], null); -- } -- -- XMultiServiceFactory xFac = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, x); -- return xFac; -- } -- protected static boolean DEBUG = false; -- protected static boolean DEBUGCHK = false; -- protected static String debugfile; -- -- protected static void debugln(String s) { -- debug(s + "\n"); -- } -- -- protected static void debug(String s) { -- if (!DEBUGCHK) { -- if (System.getProperty("xsltfilter.debug") == null) { -- DEBUGCHK = true; -- return; -- } else { -- debugfile = System.getProperty("xsltfilter.debug"); -- DEBUG = true; -- } -- } -- if (!DEBUG) { -- return; -- } -- try { -- FileWriter dbgwriter = new FileWriter(debugfile, true); -- dbgwriter.write(s); -- dbgwriter.close(); -- } catch (Exception e) { -- e.printStackTrace(); -- } -- } --} -diff --git a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java -deleted file mode 100644 -index 7036646..0000000 ---- a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java -+++ /dev/null -@@ -1,506 +0,0 @@ --package com.sun.star.comp.xsltfilter; -- --/************************************************************************ -- * -- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -- * -- * Copyright 2000, 2010 Oracle and/or its affiliates. -- * -- * OpenOffice.org - a multi-platform office productivity suite -- * -- * This file is part of OpenOffice.org. -- * -- * OpenOffice.org is free software: you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License version 3 -- * only, as published by the Free Software Foundation. -- * -- * OpenOffice.org is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU Lesser General Public License version 3 for more details -- * (a copy is included in the LICENSE file that accompanied this code). -- * -- * You should have received a copy of the GNU Lesser General Public License -- * version 3 along with OpenOffice.org. If not, see -- * -- * for a copy of the LGPLv3 License. -- * -- ************************************************************************/ -- --//Standard Java classes --import java.io.BufferedInputStream; --import java.io.BufferedOutputStream; --import java.io.File; --import java.io.FileOutputStream; --import java.io.InputStream; --import java.io.PrintStream; --import java.io.StringReader; --import java.net.URL; --import java.net.URLConnection; --import java.util.Enumeration; --import java.util.Hashtable; --import java.util.Vector; -- --// Imported TraX classes --import javax.xml.parsers.SAXParserFactory; --import javax.xml.transform.Source; --import javax.xml.transform.Transformer; --import javax.xml.transform.TransformerFactory; --import javax.xml.transform.URIResolver; --import javax.xml.transform.sax.SAXSource; --import javax.xml.transform.stream.StreamResult; --import javax.xml.transform.stream.StreamSource; --import org.xml.sax.EntityResolver; --import org.xml.sax.InputSource; --import org.xml.sax.SAXException; --import org.xml.sax.XMLReader; -- --//StarOffice Interfaces and UNO --import com.sun.star.beans.NamedValue; --import com.sun.star.comp.loader.FactoryHelper; --import com.sun.star.io.XActiveDataControl; --import com.sun.star.io.XActiveDataSink; --import com.sun.star.io.XActiveDataSource; --import com.sun.star.io.XInputStream; --import com.sun.star.io.XOutputStream; --import com.sun.star.io.XSeekable; --import com.sun.star.io.XStreamListener; --import com.sun.star.lang.XInitialization; --import com.sun.star.lang.XMultiServiceFactory; --import com.sun.star.lang.XServiceInfo; --import com.sun.star.lang.XServiceName; --import com.sun.star.lang.XSingleServiceFactory; --import com.sun.star.lang.XTypeProvider; --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; --import com.sun.star.lib.uno.adapter.XOutputStreamToOutputStreamAdapter; --import javax.xml.transform.Templates; -- --import net.sf.saxon.FeatureKeys; -- --/** This outer class provides an inner class to implement the service -- * description and a method to instantiate the -- * component on demand (__getServiceFactory()). -- */ --public class XSLTransformer -- implements XTypeProvider, XServiceName, XServiceInfo, XXSLTTransformer, -- URIResolver, EntityResolver { -- -- /** -- * This component provides java based XSL transformations -- * A SAX based interface is not feasible when crossing language bordes -- * since too much time would be wasted by bridging the events between environments -- * example: 190 pages document, 82000 events 8seconds transform 40(!) sec. bridging -- * -- */ -- private XInputStream m_xis; -- private XOutputStream m_xos; // private static HashMap templatecache; -- private static final String STATSPROP = "XSLTransformer.statsfile"; -- private static PrintStream statsp; -- private String stylesheeturl; -- private String targeturl; -- private String targetbaseurl; -- private String sourceurl; -- private String sourcebaseurl; -- private String pubtype = new String(); -- private String systype = new String(); // processing thread -- private Thread t; // listeners -- private Vector listeners = new Vector(); // -- private XMultiServiceFactory svcfactory; // cache for transformations by stylesheet -- private static Hashtable xsltReferences = new Hashtable(); -- // struct for cached stylesheets -- private static class Transformation { -- -- public Templates cachedXSLT; -- public long lastmod; -- } -- // Resolve URIs to an empty source -- public Source resolve(String href, String base) { -- return new StreamSource(new StringReader("")); -- } -- -- public InputSource resolveEntity(String publicId, String systemId) throws SAXException, java.io.IOException { -- return new InputSource(new StringReader("")); -- } -- // --- Initialization --- -- public XSLTransformer(XMultiServiceFactory msf) { -- svcfactory = msf; -- } -- -- public void initialize(Object[] args) throws com.sun.star.uno.Exception { -- // some configurable debugging -- String statsfilepath = null; -- if ((statsfilepath = System.getProperty(STATSPROP)) != null) { -- try { -- File statsfile = new File(statsfilepath); -- statsp = new PrintStream(new FileOutputStream(statsfile.getPath(), false)); -- } catch (java.lang.Exception e) { -- System.err.println("XSLTransformer: could not open statsfile'" + statsfilepath + "'"); -- System.err.println(" " + e.getClass().getName() + ": " + e.getMessage()); -- System.err.println(" output disabled"); -- } -- } -- -- Object[] values = (Object[]) args[0]; -- -- // reading the values -- NamedValue nv = null; -- debug("The transformation's parameters as 'name = value' pairs:\n"); -- -- for (int i = 0; i < values.length; i++) { -- nv = (NamedValue) AnyConverter.toObject(new Type(NamedValue.class), values[i]); -- -- if (nv.Name != null && !nv.Name.equals("")) { -- debug(nv.Name + " = " + nv.Value); -- } -- -- if (nv.Name.equals("StylesheetURL")) { -- stylesheeturl = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } else if (nv.Name.equals("SourceURL")) { -- sourceurl = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } else if (nv.Name.equals("TargetURL")) { -- targeturl = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } else if (nv.Name.equals("SourceBaseURL")) { -- sourcebaseurl = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } else if (nv.Name.equals("TargetBaseURL")) { -- targetbaseurl = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } else if (nv.Name.equals("SystemType")) { -- systype = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } else if (nv.Name.equals("PublicType")) { -- pubtype = (String) AnyConverter.toObject( -- new Type(String.class), nv.Value); -- } -- } -- } -- -- // --- XActiveDataSink xistream = aStream; -- public void setInputStream(XInputStream aStream) { -- m_xis = aStream; -- } -- -- public com.sun.star.io.XInputStream getInputStream() { -- return m_xis; -- } -- -- // --- XActiveDataSource -- public void setOutputStream(XOutputStream aStream) { -- m_xos = aStream; -- } -- -- public com.sun.star.io.XOutputStream getOutputStream() { -- return m_xos; -- } -- -- // --- XActiveDataControl -- public void addListener(XStreamListener aListener) { -- if (aListener != null && !listeners.contains(aListener)) { -- listeners.add(aListener); -- } -- } -- -- public void removeListener(XStreamListener aListener) { -- if (aListener != null) { -- listeners.removeElement(aListener); -- } -- -- } -- -- public void start() { -- // notify listeners -- t = new Thread() { -- -- @Override -- public void run() { -- -- // Local variabes used outside try block in finally block -- InputStream is = null; -- Source source = null; -- BufferedOutputStream os = null; -- PrintStream origOut = System.out; -- PrintStream origErr = System.err; -- if (statsp != null) { -- System.setErr(statsp); -- System.setOut(statsp); -- } -- try { -- debug("\n\nStarting transformation..."); -- -- // Set up context class loader for SAXParserFactory and -- // TransformerFactory calls below: -- setContextClassLoader(this.getClass().getClassLoader()); -- -- for (Enumeration e = listeners.elements(); e.hasMoreElements();) { -- XStreamListener l = (XStreamListener) e.nextElement(); -- l.started(); -- } -- -- XSeekable xseek = (XSeekable) UnoRuntime.queryInterface(XSeekable.class, m_xis); -- if (xseek != null) { -- xseek.seek(0); -- } -- -- is = new BufferedInputStream( -- new XInputStreamToInputStreamAdapter(m_xis)); -- //Source xmlsource = new StreamSource(xmlinput); -- SAXParserFactory spf = SAXParserFactory.newInstance(); -- spf.setValidating(false); -- spf.setNamespaceAware(true); -- XMLReader xmlReader = spf.newSAXParser().getXMLReader(); -- xmlReader.setEntityResolver(XSLTransformer.this); -- source = new SAXSource(xmlReader, new InputSource(is)); -- -- // in order to help performance and to remedy a a possible memory -- // leak in xalan, where it seems, that Transformer instances cannot -- // be reclaimed though they are no longer referenced here, we use -- // a cache of weak references (ie. xsltReferences) created for specific -- // style sheet URLs see also #i48384# -- -- Templates xsltTemplate = null; -- Transformer transformer = null; -- Transformation transformation = null; -- // File stylefile = new File(new URI(stylesheeturl)); -- long lastmod = 0; -- try { -- URL uStyle = new URL(stylesheeturl); -- URLConnection c = uStyle.openConnection(); -- lastmod = c.getLastModified(); -- } catch (java.lang.Exception ex) { -- // lastmod will remain at 0; -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } -- -- synchronized (xsltReferences) { -- java.lang.ref.WeakReference ref = null; -- // try to get the xsltTemplate reference from the cache -- if ((ref = (java.lang.ref.WeakReference) xsltReferences.get(stylesheeturl)) == null || -- (transformation = ((Transformation) ref.get())) == null || -- ((Transformation) ref.get()).lastmod < lastmod) { -- // we cannot find a valid reference for this stylesheet -- // or the stylsheet was updated -- if (ref != null) { -- xsltReferences.remove(stylesheeturl); -- } -- // create new xsltTemplate for this stylesheet -- TransformerFactory tfactory = TransformerFactory.newInstance(); -- debug("TransformerFactory is '" + tfactory.getClass().getName() + "'"); -- // some external saxons (Debian, Ubuntu, ...) have this disabled -- // per default -- tfactory.setAttribute(FeatureKeys.ALLOW_EXTERNAL_FUNCTIONS, new Boolean(true)); -- xsltTemplate = tfactory.newTemplates(new StreamSource(stylesheeturl)); -- -- // store the transformation into the cache -- transformation = new Transformation(); -- transformation.lastmod = lastmod; -- transformation.cachedXSLT = xsltTemplate; -- ref = new java.lang.ref.WeakReference(transformation); -- xsltReferences.put(stylesheeturl, ref); -- } -- } -- xsltTemplate = transformation.cachedXSLT; -- transformer = xsltTemplate.newTransformer(); -- transformer.setOutputProperty("encoding", "UTF-8"); -- // transformer.setURIResolver(XSLTransformer.this); -- -- // invalid to set 'null' as parameter as 'null' is not a valid Java object -- if (sourceurl != null) { -- transformer.setParameter("sourceURL", sourceurl); -- } -- if (sourcebaseurl != null) { -- transformer.setParameter("sourceBaseURL", sourcebaseurl); -- } -- if (targeturl != null) { -- transformer.setParameter("targetURL", targeturl); -- } -- if (targetbaseurl != null) { -- transformer.setParameter("targetBaseURL", targetbaseurl); -- } -- if (pubtype != null) { -- transformer.setParameter("publicType", pubtype); -- } -- if (systype != null) { -- transformer.setParameter("systemType", systype); -- } -- if (svcfactory != null) { -- transformer.setParameter("XMultiServiceFactory", svcfactory); -- } -- os = new BufferedOutputStream( -- new XOutputStreamToOutputStreamAdapter(m_xos)); -- StreamResult sr = new StreamResult(os); -- long tstart = System.currentTimeMillis(); -- transformer.transform(source, sr); -- debug("finished transformation in " + (System.currentTimeMillis() - tstart) + "ms"); -- -- } catch (java.lang.Throwable ex) { -- // notify any listeners about close -- for (Enumeration e = listeners.elements(); e.hasMoreElements();) { -- -- XStreamListener l = (XStreamListener) e.nextElement(); -- l.error(new com.sun.star.uno.Exception(ex.getClass().getName() + ": " + ex.getMessage())); -- } -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } finally { -- // dereference input buffer -- source = null; -- try { -- if (is != null) { -- is.close(); -- } -- } catch (java.lang.Throwable ex) { -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } -- try { -- if (os != null) { -- os.close(); -- } -- } catch (java.lang.Throwable ex) { -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } -- try { -- if (m_xis != null) { -- m_xis.closeInput(); -- } -- } catch (java.lang.Throwable ex) { -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } -- try { -- if (m_xos != null) { -- m_xos.closeOutput(); -- } -- } catch (java.lang.Throwable ex) { -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } -- -- // resetting standard input/error streams from logfile to default -- if (statsp != null) { -- System.setErr(origErr); -- System.setOut(origOut); -- } -- // try to release references asap... -- m_xos = null; -- m_xis = null; -- is = null; -- os = null; -- // notify any listeners about close -- if (listeners != null) { -- for (Enumeration e = listeners.elements(); e.hasMoreElements();) { -- XStreamListener l = (XStreamListener) e.nextElement(); -- l.closed(); -- } -- } -- } -- } -- }; -- t.start(); -- } /* a statsfile have to be created as precondition to use this function */ -- -- -- private static final void debug(String s) { -- if (statsp != null) { -- statsp.println(s); -- } -- } -- -- public void terminate() { -- try { -- debug("terminate called"); -- if (t.isAlive()) { -- t.interrupt(); -- for (Enumeration e = listeners.elements(); e.hasMoreElements();) { -- XStreamListener l = (XStreamListener) e.nextElement(); -- l.terminated(); -- } -- } -- } catch (java.lang.Exception ex) { -- if (statsp != null) { -- statsp.println(ex.getClass().getName() + ": " + ex.getMessage()); -- ex.printStackTrace(statsp); -- } -- } -- } // --- component management interfaces... --- -- private final static String _serviceName = "com.sun.star.xml.xslt.XSLT2Transformer"; -- -- // Implement methods from interface XTypeProvider -- public byte[] getImplementationId() { -- byte[] byteReturn = {}; -- byteReturn = new String("" + this.hashCode()).getBytes(); -- return (byteReturn); -- } -- -- public com.sun.star.uno.Type[] getTypes() { -- Type[] typeReturn = {}; -- try { -- typeReturn = new Type[]{ -- new Type(XTypeProvider.class), -- new Type(XServiceName.class), -- new Type(XServiceInfo.class), -- new Type(XActiveDataSource.class), -- new Type(XActiveDataSink.class), -- new Type(XActiveDataControl.class), -- new Type(XInitialization.class) -- }; -- } catch (java.lang.Exception exception) { -- } -- -- return (typeReturn); -- } -- -- // --- Implement method from interface XServiceName --- -- public String getServiceName() { -- return (_serviceName); -- } -- -- // --- Implement methods from interface XServiceInfo --- -- public boolean supportsService(String stringServiceName) { -- return (stringServiceName.equals(_serviceName)); -- } -- -- public String getImplementationName() { -- return (XSLTransformer.class.getName()); -- } -- -- public String[] getSupportedServiceNames() { -- String[] stringSupportedServiceNames = {_serviceName}; -- return stringSupportedServiceNames; -- } -- -- // --- component registration methods --- -- public static XSingleServiceFactory __getServiceFactory( -- String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) { -- XSingleServiceFactory xSingleServiceFactory = null; -- if (implName.equals(XSLTransformer.class.getName())) { -- xSingleServiceFactory = FactoryHelper.getServiceFactory(XSLTransformer.class, -- _serviceName, multiFactory, regKey); -- } -- return xSingleServiceFactory; -- } --} -diff --git a/filter/source/xsltfilter/components.rdb b/filter/source/xsltfilter/components.rdb -deleted file mode 100644 -index 6014b82..0000000 ---- a/filter/source/xsltfilter/components.rdb -+++ /dev/null -@@ -1,8 +0,0 @@ -- -- -- -- -- -- -- -- -diff --git a/filter/source/xsltfilter/description-en-US.txt b/filter/source/xsltfilter/description-en-US.txt -deleted file mode 100644 -index 88c8abf..0000000 ---- a/filter/source/xsltfilter/description-en-US.txt -+++ /dev/null -@@ -1 +0,0 @@ --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 -deleted file mode 100644 -index ae6abcb..0000000 ---- a/filter/source/xsltfilter/description.xml -+++ /dev/null -@@ -1,28 +0,0 @@ -- -- -- -- -- -- -- -- -- -- -- -- -- The Document Foundation -- -- -- -- XSLT 2.0 transformer -- -- -- -- -- -- -- -diff --git a/filter/source/xsltfilter/manifest.xml b/filter/source/xsltfilter/manifest.xml -deleted file mode 100644 -index a443e65..0000000 ---- a/filter/source/xsltfilter/manifest.xml -+++ /dev/null -@@ -1,6 +0,0 @@ -- -- -- -- -- --- -1.7.11.7 - diff --git a/0003-make-avmedia-build-with-gstreamer-0.10.patch b/0003-make-avmedia-build-with-gstreamer-0.10.patch deleted file mode 100644 index 441cece..0000000 --- a/0003-make-avmedia-build-with-gstreamer-0.10.patch +++ /dev/null @@ -1,157 +0,0 @@ -From 03bd2fd7b97f8f8164039203027f89e82c1c4212 Mon Sep 17 00:00:00 2001 -From: David Tardon -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 ---- - 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 -+# 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 - diff --git a/0004-remove-all-traces-of-saxon.patch b/0004-remove-all-traces-of-saxon.patch deleted file mode 100644 index 7c90ca2..0000000 --- a/0004-remove-all-traces-of-saxon.patch +++ /dev/null @@ -1,1650 +0,0 @@ -From acbef0543f72f48ff135864eed181a1111fc0700 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Wed, 10 Oct 2012 17:42:46 +0200 -Subject: [PATCH 4/4] remove all traces of saxon - -(cherry picked from commit 725eba738eae4eee6cd9b833d375db5463833119) - -Conflicts: - Makefile.top - Module_tail_build.mk - RepositoryExternal.mk - config_host.mk.in - configure.ac - ooo.lst.in - readlicense_oo/html/LICENSE.html - saxon/prj/build.lst - saxon/prj/d.lst - tail_build/prj/build.lst - -Change-Id: I33ca2c27d557d24e3900d7ebf8f3ea2d99b3cfb0 ---- - Makefile.top | 1 - - RepositoryExternal.mk | 14 - - config_host.mk.in | 3 - - configure.in | 138 --- - filter/prj/build.lst | 2 +- - ooo.lst.in | 5 - - readlicense_oo/html/THIRDPARTYLICENSEREADME.html | 14 +- - readlicense_oo/txt/NOTICE | 5 - - readlicense_oo/txt/license.txt | 14 - - saxon/README | 1 - - saxon/makefile.mk | 69 -- - saxon/prj/build.lst | 2 - - saxon/prj/d.lst | 1 - - saxon/saxon-9.0.0.7-bj.patch | 1031 ---------------------- - stax/README | 1 - - stax/makefile.mk | 78 -- - stax/prj/build.lst | 2 - - stax/prj/d.lst | 1 - - tail_build/prj/build.lst | 2 +- - 19 files changed, 3 insertions(+), 1381 deletions(-) - delete mode 100644 saxon/README - delete mode 100644 saxon/makefile.mk - delete mode 100644 saxon/prj/build.lst - delete mode 100644 saxon/prj/d.lst - delete mode 100644 saxon/prj/dmake - delete mode 100644 saxon/saxon-9.0.0.7-bj.patch - delete mode 100644 stax/README - delete mode 100644 stax/makefile.mk - delete mode 100644 stax/prj/build.lst - delete mode 100644 stax/prj/d.lst - delete mode 100644 stax/prj/dmake - -diff --git a/Makefile.top b/Makefile.top -index 7451445..c84cc6f 100644 ---- a/Makefile.top -+++ b/Makefile.top -@@ -232,7 +232,6 @@ rhino\ - saxon\ - setup_native\ - soltools\ --stax\ - stlport\ - sysui\ - tomcat\ -diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk -index 730043c..b8a3cbd 100644 ---- a/RepositoryExternal.mk -+++ b/RepositoryExternal.mk -@@ -1698,20 +1698,6 @@ endif - - ### Jars ############################################################ - --ifeq ($(SYSTEM_SAXON),YES) -- --define gb_JavaClassSet__use_saxon --$(call gb_JavaClassSet_use_system_jar,$(1),$(SAXON_JAR)) --endef -- --else # !SYSTEM_SAXON -- --define gb_JavaClassSet__use_saxon --$(call gb_JavaClassSet_use_jar,$(1),$(OUTDIR)/bin/saxon9.jar) --endef -- --endif # SYSTEM_SAXON -- - ifeq ($(SYSTEM_BSH),YES) - - define gb_JavaClassSet__use_bsh -diff --git a/config_host.mk.in b/config_host.mk.in -index 4fb80d1..f643039 100644 ---- a/config_host.mk.in -+++ b/config_host.mk.in -@@ -32,7 +32,6 @@ export BUILD_MOZAB=@BUILD_MOZAB@ - export BUILD_NCPUS=@BUILD_NCPUS@ - export BUILD_PLATFORM=@build@ - export BUILD_POSTGRESQL_SDBC=@BUILD_POSTGRESQL_SDBC@ --export BUILD_STAX=@BUILD_STAX@ - export BUILD_TYPE=@BUILD_TYPE@ - export BUILD_UNOWINREG=@BUILD_UNOWINREG@ - export BUILD_VER_STRING=@BUILD_VER_STRING@ -@@ -433,7 +432,6 @@ export RTL_OS=@RTL_OS@ - export RTL_ARCH=@RTL_ARCH@ - export SAC_JAR=@SAC_JAR@ - export SAL_ENABLE_FILE_LOCKING=1 --export SAXON_JAR=@SAXON_JAR@ - export SCPDEFS=@SCPDEFS@ - export SERVLETAPI_JAR=@SERVLETAPI_JAR@ - export SHOWINCLUDES_PREFIX=@SHOWINCLUDES_PREFIX@ -@@ -528,7 +526,6 @@ export SYSTEM_POSTGRESQL=@SYSTEM_POSTGRESQL@ - export SYSTEM_PYTHON=@SYSTEM_PYTHON@ - export SYSTEM_REDLAND=@SYSTEM_REDLAND@ - export SYSTEM_RHINO=@SYSTEM_RHINO@ --export SYSTEM_SAXON=@SYSTEM_SAXON@ - export SYSTEM_SERVLETAPI=@SYSTEM_SERVLETAPI@ - export SYSTEM_STDLIBS=@SYSTEM_STDLIBS@ - export SYSTEM_VIGRA=@SYSTEM_VIGRA@ -diff --git a/configure.in b/configure.in -index b2ae537..0b286ee 100644 ---- a/configure.in -+++ b/configure.in -@@ -1427,16 +1427,6 @@ AC_ARG_WITH(libbase-jar, - [Specify path to jarfile manually.]), - LIBBASE_JAR=$withval) - --AC_ARG_WITH(system-saxon, -- AS_HELP_STRING([--with-system-saxon], -- [Use saxon already on system.]),, -- [with_system_saxon="$with_system_jars"]) -- --AC_ARG_WITH(saxon-jar, -- AS_HELP_STRING([--with-saxon-jar=JARFILE], -- [Specify path to jarfile manually.]), -- SAXON_JAR=$withval) -- - AC_ARG_WITH(system-odbc, - AS_HELP_STRING([--with-system-odbc], - [Use the odbc headers already on system.]),, -@@ -7066,134 +7056,6 @@ AC_SUBST(SYSTEM_POSTGRESQL) - AC_SUBST(POSTGRESQL_INC) - AC_SUBST(POSTGRESQL_LIB) - -- --dnl =================================================================== --dnl Check for system saxon --dnl =================================================================== --if test "$with_java" != "no"; then --AC_MSG_CHECKING([which saxon to use]) --if test "$with_system_saxon" = "yes"; then -- AC_MSG_RESULT([external]) -- SYSTEM_SAXON=YES -- if test -z $SAXON_JAR; then -- AC_CHECK_FILE(/usr/share/java/saxon9.jar, -- [ SAXON_JAR=/usr/share/java/saxon9.jar ], -- [ -- AC_CHECK_FILE(/usr/share/java/saxon.jar, -- [ SAXON_JAR=/usr/share/java/saxon.jar ], -- [ AC_CHECK_FILE(/usr/share/java/saxon9.jar, -- [ SAXON_JAR=/usr/share/java/saxon9.jar ], -- [ AC_MSG_ERROR(saxon.jar replacement not found)] -- ) -- ] -- ) -- ] -- ) -- else -- AC_CHECK_FILE($SAXON_JAR, [], -- [AC_MSG_ERROR(saxon.jar replacement not found.)], []) -- fi -- if test -n "$SERIALIZER_JAR"; then -- AC_CHECK_FILE($SERIALIZER_JAR, [], -- [AC_MSG_ERROR(serializer.jar not found.)], []) -- AC_SUBST(SERIALIZER_JAR) -- fi -- -- dnl Saxon comes in two practically available versions, the out-of-date saxonb which -- dnl supports the Java extensions that LibreOffice uses, and the up-to-date saxon he -- dnl "home edition" version, which is crippled to not support those Java extensions. -- dnl And as an aside the he one also needs to be tweaked to include -- dnl a META-INF/services to broadcast that it supports the jaxp transform factory -- -- AC_MSG_CHECKING([if saxon works]) -- cat > saxontest.java <<_ACEOF --[import javax.xml.transform.TransformerFactory; --import javax.xml.transform.Transformer; --import javax.xml.transform.stream.StreamSource; --import java.io.*; -- --import net.sf.saxon.FeatureKeys; -- --class saxontest { -- public static void main(String[] args) { -- System.setProperty("javax.xml.transform.TransformerFactory", -- "net.sf.saxon.TransformerFactoryImpl"); -- try { -- TransformerFactory tfactory = TransformerFactory.newInstance(); -- // some external saxons (Debian, Ubuntu, ...) have this disabled -- // per default -- tfactory.setAttribute(FeatureKeys.ALLOW_EXTERNAL_FUNCTIONS, new Boolean(true)); -- System.out.println("TransformerFactory is" + -- tfactory.getClass().getName()); -- Transformer transformer = tfactory.newTransformer( -- new StreamSource(new File(args[0]))); -- } catch(Exception e){ -- e.printStackTrace(System.err); -- System.exit(-1); -- } -- System.exit(0); -- } --} --] --_ACEOF -- -- cat > saxontest.xsl<<_ACEOF --[ -- -- -- -- -- --] --_ACEOF -- -- javac_cmd="$JAVACOMPILER -cp $SAXON_JAR saxontest.java 1>&2" -- AC_TRY_EVAL(javac_cmd) -- if test $? = 0 -a -f ./saxontest.class; then -- java_cmd="$JAVAINTERPRETER -cp $SAXON_JAR:. saxontest saxontest.xsl 1>&2" -- AC_TRY_EVAL(java_cmd) -- if test $? = 0; then -- AC_MSG_RESULT([yes]) -- else -- cat saxontest.java >&5 -- AC_MSG_RESULT([no]) -- AC_MSG_ERROR([Non-functional saxon jar, e.g. crippled saxon-he instead of saxonb]) -- fi -- else -- AC_MSG_RESULT([no]) -- cat saxontest.java >&5 -- AC_MSG_ERROR([saxontest could not be compiled, non-functional saxon jar]) -- fi --else -- AC_MSG_RESULT([internal]) -- SYSTEM_SAXON=NO -- NEED_SAXON=TRUE --fi --fi --AC_SUBST(SYSTEM_SAXON) --AC_SUBST(SAXON_JAR) -- --if test -n "$NEED_SAXON"; then -- BUILD_TYPE="$BUILD_TYPE SAXON" --fi -- --# =================================================================== --# Check whether to build stax --# =================================================================== --AC_MSG_CHECKING([whether building the stax is required]) --BUILD_STAX=NO --if test -z "$SOLAR_JAVA"; then -- AC_MSG_RESULT([no (java disabled)]) --elif test "$SYSTEM_SAXON" = "YES"; then -- AC_MSG_RESULT([no (already provided by system saxon)]) --elif test -f "./stax/download/jsr173_1.0_api.jar"; then -- AC_MSG_RESULT([no (will use the prebuilt stax/download/jsr173_1.0_api.jar)]) --else -- BUILD_STAX=YES -- AC_MSG_RESULT([yes (no system saxon and no prebuilt copy)]) --fi --AC_SUBST(BUILD_STAX) -- - dnl =================================================================== - dnl Check for system curl - dnl =================================================================== -diff --git a/filter/prj/build.lst b/filter/prj/build.lst -index 9083dc7..2319f39 100644 ---- a/filter/prj/build.lst -+++ b/filter/prj/build.lst -@@ -1,2 +1,2 @@ --fl filter : TRANSLATIONS:translations svtools unotools xmloff cppu tools cppuhelper sal salhelper svx javaunohelper XPDF:xpdf jvmaccess canvas SAXON:saxon LIBXSLT:libxslt basegfx package PYTHON:python NULL -+fl filter : TRANSLATIONS:translations svtools unotools xmloff cppu tools cppuhelper sal salhelper svx javaunohelper XPDF:xpdf jvmaccess canvas LIBXSLT:libxslt basegfx package PYTHON:python NULL - fl filter\prj nmake - all fl_prj NULL -diff --git a/ooo.lst.in b/ooo.lst.in -index 02d14b0..4d5b977 100644 ---- a/ooo.lst.in -+++ b/ooo.lst.in -@@ -8,7 +8,6 @@ c63f411b3ad147db2bcce1bf262a0e02-pixman-0.24.4.tar.bz2 - 1756c4fa6c616ae15973c104cd8cb256-Adobe-Core35_AFMs-314.tar.gz - 18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz - 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz --24be19595acad0a2cae931af77a0148a-LICENSE_source-9.0.0.7-bj.html - 26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz - 284e768eeda0e2898b0d5bf7e26a016e-raptor-1.4.18.tar.gz - 2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz -@@ -30,12 +29,9 @@ f101a9e88b783337b20b2e26dfd26d5f-cairo-1.10.2.tar.gz - 7376930b0d3f3d77a685d94c4a3acda8-STLport-4.5-0119.tar.gz - 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip - ecb2e37e45c9933e2a963cabe03670ab-curl-7.19.7.tar.gz --8294d6c42e3553229af9934c5c0ed997-stax-api-1.0-2-sources.jar - bd30e9cf5523cdfc019b94f5e1d7fd19-cppunit-1.12.1.tar.gz - a169ab152209200a7bad29a275cb0333-seamonkey-1.1.14.source.tar.gz --a4d9b30810a434a3ed39fc0003bbd637-LICENSE_stax-api-1.0-2-sources.html - a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip --ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip - af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz - bc702168a2af16869201dbe91e46ae48-LICENSE_Python-2.6.1 - c441926f3a552ed3e5b274b62e86af16-STLport-4.0.tar.gz -@@ -48,7 +44,6 @@ e61d0364a30146aaa3001296f853b2b9-libxslt-1.1.26.tar.gz - ea570af93c284aa9e5621cd563f54f4d-bsh-2.0b1-src.tar.gz - ea91f2fb4212a21d708aced277e6e85a-vigra1.4.0.tar.gz - dd7dab7a5fea97d2a6a43f511449b7cd-expat-2.1.0.tar.gz --fb7ba5c2182be4e73748859967455455-README_stax-api-1.0-2-sources.txt - fca8706f2c4619e2fa3f8f42f8fc1e9d-rasqal-0.9.16.tar.gz - f872f4ac066433d8ff92f5e316b36ff9-dejavu-fonts-ttf-2.33.zip - 0981bda6548a8c8233ffce2b6e4b2a23-mysql-connector-c++-1.1.0.tar.gz -diff --git a/readlicense_oo/html/THIRDPARTYLICENSEREADME.html b/readlicense_oo/html/THIRDPARTYLICENSEREADME.html -index 46fc32f..4fca83d 100644 ---- a/readlicense_oo/html/THIRDPARTYLICENSEREADME.html -+++ b/readlicense_oo/html/THIRDPARTYLICENSEREADME.html -@@ -2110,18 +2110,6 @@ FITNESS FOR A PARTICULAR PURPOSE.

-

This - file declares SANE application interface. See the SANE standard for a - detailed explanation of the interface.

--

Saxon (B)

--

The --following software may be included in this product: Saxon (B). Use of --any of this software is governed by the terms of the license below:

--

Jump --to MPL Version 1.1

--

Stax

--

The --following software may be included in this product: Stax API. Use of --any of this software is governed by the terms of the license below:

--

Jump --to Apache License Version 2.0

-

STLPort

-

The - following software may be included in this product:STLport. Use of -@@ -9429,4 +9417,4 @@ this trademark restriction does not form part of the License.

-

Creative - Commons may be contacted at http://creativecommons.org/.

- -- -\ No newline at end of file -+ -diff --git a/readlicense_oo/txt/NOTICE b/readlicense_oo/txt/NOTICE -index 181aea7..8edf0f0 100644 ---- a/readlicense_oo/txt/NOTICE -+++ b/readlicense_oo/txt/NOTICE -@@ -139,7 +139,6 @@ As part of the base system this product also includes code from the following - projects which are licensed under the Apache license: - - serf - - redland --- StAX - - The notices from these projects are following: - -@@ -153,10 +152,6 @@ This product includes Redland software (http://librdf.org/) - developed at the Institute for Learning and Research Technology, - University of Bristol, UK (http://www.bristol.ac.uk/). - -- --StAX --[no notices] -- - ____ - - This product includes software developed by the OpenSSL Project -diff --git a/readlicense_oo/txt/license.txt b/readlicense_oo/txt/license.txt -index 6acf5b6d..137a892 100644 ---- a/readlicense_oo/txt/license.txt -+++ b/readlicense_oo/txt/license.txt -@@ -2057,20 +2057,6 @@ SANE - This file declares SANE application interface. See the SANE standard - for a detailed explanation of the interface. - --Saxon (B) -- -- The following software may be included in this product: Saxon (B). Use -- of any of this software is governed by the terms of the license below: -- -- See MPL Version 1.1 below -- --Stax -- -- The following software may be included in this product: Stax API. Use -- of any of this software is governed by the terms of the license below: -- -- See Apache License Version 2.0 below -- - STLPort - - The following software may be included in this product:STLport. Use of -diff --git a/saxon/README b/saxon/README -deleted file mode 100644 -index 26344a7..0000000 ---- a/saxon/README -+++ /dev/null -@@ -1 +0,0 @@ --XSLT and XQuery Processor from [[http://saxon.sourceforge.net/]] -diff --git a/saxon/makefile.mk b/saxon/makefile.mk -deleted file mode 100644 -index 40a7404..0000000 ---- a/saxon/makefile.mk -+++ /dev/null -@@ -1,69 +0,0 @@ --#************************************************************************* --# --# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. --# --# Copyright 2000, 2010 Oracle and/or its affiliates. --# --# OpenOffice.org - a multi-platform office productivity suite --# --# This file is part of OpenOffice.org. --# --# OpenOffice.org is free software: you can redistribute it and/or modify --# it under the terms of the GNU Lesser General Public License version 3 --# only, as published by the Free Software Foundation. --# --# OpenOffice.org is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU Lesser General Public License version 3 for more details --# (a copy is included in the LICENSE file that accompanied this code). --# --# You should have received a copy of the GNU Lesser General Public License --# version 3 along with OpenOffice.org. If not, see --# --# for a copy of the LGPLv3 License. --# --#************************************************************************* -- --PRJ=. -- --PRJNAME=saxon --TARGET=saxon -- --# --- Settings ----------------------------------------------------- -- --.INCLUDE : settings.mk --.INCLUDE : antsettings.mk -- --.IF "$(SOLAR_JAVA)" != "" --.IF "$(SYSTEM_SAXON)" == "YES" --all: -- @echo "An already available installation of saxon should exist on your system." -- @echo "Therefore the version provided here does not need to be built in addition." --.ENDIF -- --# --- Files -------------------------------------------------------- -- --TARFILE_NAME=source-9.0.0.7-bj --TARFILE_MD5=ada24d37d8d638b3d8a9985e80bc2978 --ADDITIONAL_FILES=build.xml --TARFILE_ROOTDIR=src -- --PATCH_FILES=saxon-9.0.0.7-bj.patch -- --BUILD_ACTION="$(ANT)" $(ANT_FLAGS) -Dsolarbindir=$(SOLARBINDIR) jar-bj -- --OUT2CLASS= saxon-build$/9.0.0.7$/bj$/saxon9.jar -- --.ELSE # $(SOLAR_JAVA)!= "" --nojava: -- @echo "Not building $(PRJNAME) because Java is disabled" --.ENDIF # $(SOLAR_JAVA)!= "" --# --- Targets ------------------------------------------------------ -- --.INCLUDE : set_ext.mk --.INCLUDE : target.mk --.IF "$(SOLAR_JAVA)" != "" --.INCLUDE : tg_ext.mk --.ENDIF -- -diff --git a/saxon/prj/build.lst b/saxon/prj/build.lst -deleted file mode 100644 -index 813097c..0000000 ---- a/saxon/prj/build.lst -+++ /dev/null -@@ -1,2 +0,0 @@ --xx saxon : solenv stax NULL --xx saxon nmake - all xx_saxon NULL -diff --git a/saxon/prj/d.lst b/saxon/prj/d.lst -deleted file mode 100644 -index 0793dad..0000000 ---- a/saxon/prj/d.lst -+++ /dev/null -@@ -1 +0,0 @@ --..\%__SRC%\class\saxon9.jar %_DEST%\bin\saxon9.jar -diff --git a/saxon/prj/dmake b/saxon/prj/dmake -deleted file mode 100644 -index e69de29..0000000 -diff --git a/saxon/saxon-9.0.0.7-bj.patch b/saxon/saxon-9.0.0.7-bj.patch -deleted file mode 100644 -index 11d3091..0000000 ---- a/saxon/saxon-9.0.0.7-bj.patch -+++ /dev/null -@@ -1,1031 +0,0 @@ ----- misc/src/build.xml 2008-07-11 12:11:50.079281000 +0200 --+++ misc/build/src/build.xml 2008-07-11 12:17:29.848740000 +0200 --@@ -1 +1,1027 @@ ---dummy --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ net.sf.saxon.xpath.XPathFactoryImpl --+http\://java.sun.com/jaxp/xpath/dom: net.sf.saxon.xpath.XPathFactoryImpl --+http\://saxon.sf.net/jaxp/xpath/om: net.sf.saxon.xpath.XPathFactoryImpl --+http\://www.xom.nu/jaxp/xpath/xom: net.sf.saxon.xpath.XPathFactoryImpl --+http\://jdom.org/jaxp/xpath/jdom: net.sf.saxon.xpath.XPathFactoryImpl --+http\://www.dom4j.org/jaxp/xpath/dom4j: net.sf.saxon.xpath.XPathFactoryImpl --+ --+ --+ --+ --+ com.saxonica.jaxp.SchemaFactoryImpl --+http\://www.w3.org/2001/XMLSchema: com.saxonica.jaxp.SchemaFactoryImpl --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ set NET="%PROGRAMFILES%\Microsoft.NET\SDK\v1.1\Bin" --+ %NET%\gacutil /if IKVM.Runtime.dll --+ %NET%\gacutil /if IKVM.GNU.Classpath.dll --+ %NET%\gacutil /if saxon9.dll --+ %NET%\gacutil /if saxon9api.dll --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ set NET="%PROGRAMFILES%\Microsoft.NET\SDK\v1.1\Bin" --+ %NET%\gacutil /if IKVM.Runtime.dll --+ %NET%\gacutil /if IKVM.GNU.Classpath.dll --+ %NET%\gacutil /if saxon9.dll --+ %NET%\gacutil /if saxon9sa.dll --+ %NET%\gacutil /if saxon9api.dll --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ --+ -diff --git a/stax/README b/stax/README -deleted file mode 100644 -index 13e69fb..0000000 ---- a/stax/README -+++ /dev/null -@@ -1 +0,0 @@ --Library implementing the Streaming API for XML. (CH: Which one, probably the one by Sun???) -diff --git a/stax/makefile.mk b/stax/makefile.mk -deleted file mode 100644 -index ff3238b..0000000 ---- a/stax/makefile.mk -+++ /dev/null -@@ -1,78 +0,0 @@ --#************************************************************************* --# --# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. --# --# Copyright 2000, 2010 Oracle and/or its affiliates. --# --# OpenOffice.org - a multi-platform office productivity suite --# --# This file is part of OpenOffice.org. --# --# OpenOffice.org is free software: you can redistribute it and/or modify --# it under the terms of the GNU Lesser General Public License version 3 --# only, as published by the Free Software Foundation. --# --# OpenOffice.org is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU Lesser General Public License version 3 for more details --# (a copy is included in the LICENSE file that accompanied this code). --# --# You should have received a copy of the GNU Lesser General Public License --# version 3 along with OpenOffice.org. If not, see --# --# for a copy of the LGPLv3 License. --# --#************************************************************************* -- --PRJ=. -- --PRJNAME=stax --TARGET=stax --USE_JAVAVER=TRUE -- --# --- Settings ----------------------------------------------------- -- --.INCLUDE : settings.mk --.INCLUDE : antsettings.mk -- --.IF "$(SOLAR_JAVA)" != "" --.IF "$(JAVANUMVER:s/.//)" >= "000100060000" || "$(JDK)"=="gcj" --all: -- @echo "Your java version already contains StAX" --.ENDIF # "$(JAVANUMVER:s/.//)" >= "000100060000" --.IF "$(SYSTEM_SAXON)" == "YES" --all: -- @echo "An already available installation of saxon should exist on your system." -- @echo "Therefore the files provided here does not need to be built in addition." --.ENDIF -- --.IF "$(BUILD_STAX)" != "YES" -- --$(OUT)$/class$/jsr173_1.0_api.jar : $(PRJ)$/download$/jsr173_1.0_api.jar -- +$(COPY) $< $@ -- --.ELSE # "$(BUILD_STAX)" != "YES" -- --# --- Files -------------------------------------------------------- --TARFILE_NAME=stax-api-1.0-2-sources --TARFILE_MD5=8294d6c42e3553229af9934c5c0ed997 --TARFILE_ROOTDIR=src -- --BUILD_ACTION=$(JAVAC) javax$/xml$/stream$/*.java && jar -cf jsr173_1.0_api.jar javax$/xml$/stream$/*.class javax$/xml$/stream$/events$/*.class javax$/xml$/stream$/util$/*.class -- --OUT2CLASS=jsr173_1.0_api.jar --.ENDIF # "$(BUILD_STAX)" != "YES" -- --.ELSE # $(SOLAR_JAVA)!= "" --nojava: -- @echo "Not building $(PRJNAME) because Java is disabled" --.ENDIF # $(SOLAR_JAVA)!= "" --# --- Targets ------------------------------------------------------ -- --.INCLUDE : set_ext.mk --.INCLUDE : target.mk --.IF "$(SOLAR_JAVA)" != "" --.INCLUDE : tg_ext.mk --.ENDIF -- -diff --git a/stax/prj/build.lst b/stax/prj/build.lst -deleted file mode 100644 -index cbfc6ea..0000000 ---- a/stax/prj/build.lst -+++ /dev/null -@@ -1,2 +0,0 @@ --tx stax : solenv NULL --tx stax nmake - all tx_stax NULL -diff --git a/stax/prj/d.lst b/stax/prj/d.lst -deleted file mode 100644 -index a4fd204..0000000 ---- a/stax/prj/d.lst -+++ /dev/null -@@ -1 +0,0 @@ --..\%__SRC%\class\jsr*.jar %_DEST%\bin -diff --git a/stax/prj/dmake b/stax/prj/dmake -deleted file mode 100644 -index e69de29..0000000 -diff --git a/tail_build/prj/build.lst b/tail_build/prj/build.lst -index c96ae74..0dced2b 100644 ---- a/tail_build/prj/build.lst -+++ b/tail_build/prj/build.lst -@@ -1,2 +1,2 @@ --tb tail_build : AFMS:afms APACHE_COMMONS:apache-commons BSH:beanshell BERKELEYDB:berkeleydb BOOST:boost CAIRO:cairo CPPUNIT:cppunit DESKTOP:codemaker CURL:curl EXPAT:expat FONTCONFIG:fontconfig FREETYPE:freetype GRAPHITE:graphite HSQLDB:hsqldb HUNSPELL:hunspell HYPHEN:hyphen ICU:icu DESKTOP:l10ntools JFREEREPORT:jfreereport JPEG:jpeg LCMS2:lcms2 LIBCDR:libcdr LIBCMIS:libcmis LIBEXTTEXTCAT:libexttextcat LIBXML2:libxml2 LIBXMLSEC:libxmlsec LIBXSLT:libxslt LIBWPG:libwpg LIBWPS:libwps LIBWPD:libwpd LIBVISIO:libvisio LPSOLVE:lpsolve MDDS:mdds MOZ:moz MYTHES:mythes NEON:neon NSS:nss OPENSSL:openssl POSTGRESQL:postgresql PYTHON:python REDLAND:redland SAXON:saxon DESKTOP:setup_native TRANSLATIONS:translations VIGRA:vigra XPDF:xpdf ZLIB:zlib bridges cli_ure comphelper cppu cppuhelper external jurt jvmaccess jvmfwk offapi officecfg DESKTOP:rdbmaker readlicense_oo remotebridges RHINO:rhino ridljar sal salhelper solenv soltools stoc sysui ucbhelper udkapi xmlreader xsltml NULL -+tb tail_build : AFMS:afms APACHE_COMMONS:apache-commons BSH:beanshell BERKELEYDB:berkeleydb BOOST:boost CAIRO:cairo CPPUNIT:cppunit DESKTOP:codemaker CURL:curl EXPAT:expat FONTCONFIG:fontconfig FREETYPE:freetype GRAPHITE:graphite HSQLDB:hsqldb HUNSPELL:hunspell HYPHEN:hyphen ICU:icu DESKTOP:l10ntools JFREEREPORT:jfreereport JPEG:jpeg LCMS2:lcms2 LIBCDR:libcdr LIBCMIS:libcmis LIBEXTTEXTCAT:libexttextcat LIBXML2:libxml2 LIBXMLSEC:libxmlsec LIBXSLT:libxslt LIBWPG:libwpg LIBWPS:libwps LIBWPD:libwpd LIBVISIO:libvisio LPSOLVE:lpsolve MDDS:mdds MOZ:moz MYTHES:mythes NEON:neon NSS:nss OPENSSL:openssl POSTGRESQL:postgresql PYTHON:python REDLAND:redland DESKTOP:setup_native TRANSLATIONS:translations VIGRA:vigra XPDF:xpdf ZLIB:zlib bridges cli_ure comphelper cppu cppuhelper external jurt jvmaccess jvmfwk offapi officecfg DESKTOP:rdbmaker readlicense_oo remotebridges RHINO:rhino ridljar sal salhelper solenv soltools stoc sysui ucbhelper udkapi xmlreader xsltml NULL - tb tail_build\prj nmake - all tb_prj NULL --- -1.7.11.7 - diff --git a/0004-tweak-old-school-gstreamer-link-line.patch b/0004-tweak-old-school-gstreamer-link-line.patch deleted file mode 100644 index 1d514f2..0000000 --- a/0004-tweak-old-school-gstreamer-link-line.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 300a14c4904a97cc217e56231cbcc7134ff036f3 Mon Sep 17 00:00:00 2001 -From: Michael Meeks -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 ---- - 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 - diff --git a/0005-Don-t-fail-configure-with-older-gstreamer-plugins-ba.patch b/0005-Don-t-fail-configure-with-older-gstreamer-plugins-ba.patch deleted file mode 100644 index dd82601..0000000 --- a/0005-Don-t-fail-configure-with-older-gstreamer-plugins-ba.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 9aa662f549625ae4dd4d9fe2f54a1943923b9774 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fridrich=20=C5=A0trba?= -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 ---- - 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 - diff --git a/0006-gstreamer-various-fixes-for-1.0-and-cleanups.patch b/0006-gstreamer-various-fixes-for-1.0-and-cleanups.patch deleted file mode 100644 index 0dfe24e..0000000 --- a/0006-gstreamer-various-fixes-for-1.0-and-cleanups.patch +++ /dev/null @@ -1,137 +0,0 @@ -From d6297345b26d09d9f6caa25109a165c739e1f92b Mon Sep 17 00:00:00 2001 -From: Michael Meeks -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 - diff --git a/0007-gstreamer-fix-leaking-pads.patch b/0007-gstreamer-fix-leaking-pads.patch deleted file mode 100644 index 4ca68e2..0000000 --- a/0007-gstreamer-fix-leaking-pads.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 9a54dc0d4db8eab09c9eee01be09815276da3088 Mon Sep 17 00:00:00 2001 -From: Michael Meeks -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 - diff --git a/libreoffice.spec b/libreoffice.spec index 6ccc458..1b474af 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -1,9 +1,9 @@ # 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 # 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. -# %%define libo_prerelease +%define libo_prerelease .alpha1 # rhbz#715152 state vendor %if 0%{?rhel} %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://download.documentfoundation.org/libreoffice/src/%{libo_version} -# use rpmbuild --without binfilter (or mock --without binfilter) to get -# a faster build without old binary filters +# get english only and no-langpacks for a faster smoketest build # fedpkg compile/install/local/mockbuild does not handle --without ATM, # so it is necessary to change this to bcond_with to achieve the same # effect -%bcond_without binfilter -# get english only and no-langpacks for a faster smoketest build %bcond_without langpacks %if %{with langpacks} @@ -43,21 +40,19 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 -Version: %{libo_version}.1 +Version: %{libo_version}.0 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 Group: Applications/Productivity URL: http://www.documentfoundation.org/develop BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -Source0: %{source_url}/libreoffice-core-%{version}%{?libo_prerelease}.tar.xz -Source1: %{source_url}/libreoffice-binfilter-%{version}%{?libo_prerelease}.tar.xz +Source0: %{source_url}/libreoffice-%{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 Source4: http://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll Source5: redhat-langpacks.tar.gz 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 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 @@ -138,17 +133,13 @@ BuildRequires: libcmis-devel %endif BuildRequires: libcurl-devel %if %{undefined rhel} || 0%{?rhel} >= 7 -BuildRequires: libdb-devel -%else -BuildRequires: db4-devel -%endif -%if %{undefined rhel} || 0%{?rhel} >= 7 BuildRequires: libexttextcat-devel %endif BuildRequires: libicu-devel BuildRequires: libidn-devel BuildRequires: libjpeg-devel -BuildRequires: librsvg2-devel +BuildRequires: liblangtag-devel +BuildRequires: liborcus-devel %if %{undefined rhel} || 0%{?rhel} >= 7 BuildRequires: libvisio-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 Patch6: openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.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 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 %if %{defined rhel} && 0%{?rhel} < 7 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. %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} %define debug_package %{nil} @@ -861,9 +823,8 @@ Rules for auto-correcting common %{langname} typing errors. \ %endif %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 -for a in */*; do mv `pwd`/$a .; done #Customize Palette to remove Sun colours and add Red Hat colours (head -n -1 extras/source/palettes/standard.soc && \ echo -e ' @@ -878,33 +839,14 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch3 -p1 -b .ooo88341.sc.verticalboxes.patch %patch4 -p1 -b .oooXXXXX.solenv.allowmissing.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 -%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 -%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 -%patch29 -p1 -b .rhel6gcj.patch -%patch30 -p1 -b .rhel6poppler.patch -%patch31 -p1 -b .rhel6langs.patch +#%patch29 -p1 -b .rhel6gcj.patch +#%patch30 -p1 -b .rhel6poppler.patch +#%patch31 -p1 -b .rhel6langs.patch %endif # TODO: check this @@ -966,7 +908,6 @@ touch autogen.lastrun --disable-gnome-vfs --enable-gio --enable-symbols --enable-lockdown \ --enable-evolution2 --enable-dbus --enable-opengl --enable-vba \ --enable-ext-presenter-minimizer --enable-ext-nlpsolver \ - --enable-ext-presenter-console --enable-ext-pdfimport \ --enable-ext-wiki-publisher --enable-ext-report-builder \ --enable-ext-scripting-beanshell --enable-ext-scripting-javascript \ --without-system-servlet-api \ @@ -978,12 +919,10 @@ touch autogen.lastrun %{?with_lang} --with-poor-help-localizations="$POORHELPS" \ --with-external-tar=`pwd`/ext_sources --with-java-target-version=1.5 \ %{distrooptions} \ - %{?with_binfilter:--enable-binfilter} \ --disable-fetch-external mkdir -p ext_sources cp %{SOURCE4} ext_sources -cp %{SOURCE7} ext_sources cp %{SOURCE8} ext_sources cp %{SOURCE9} ext_sources cp %{SOURCE10} ext_sources @@ -1354,7 +1293,7 @@ echo "NoDisplay=true" >> startcenter.desktop sed -i -e "/NoDisplay=true/d" qstart.desktop # relocate the .desktop and icon files 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 # desktop-file-validate $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 %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 +* Mon Nov 26 2012 David Tardon - 1:4.0.0.0.alpha1-1 +- 4.0.0 alpha1 + * Sun Nov 18 2012 David Tardon - 1:3.6.4.1-1 - 3.6.4 rc1 diff --git a/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch b/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch index b82f4df..a943d48 100644 --- a/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch +++ b/openoffice.org-3.0.0.ooo88341.sc.verticalboxes.patch @@ -33,7 +33,7 @@ index de1506a..5522e69 100644 - // except when font size is from conditional formatting. - //! Allow clipping when vertically merged? - 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->GetItemState(ATTR_FONT_HEIGHT, true) ) ) + if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet)) @@ -68,7 +68,7 @@ index de1506a..5522e69 100644 - // except when font size is from conditional formatting. - //! Allow clipping when vertically merged? - 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->GetItemState(ATTR_FONT_HEIGHT, true) ) ) + @@ -84,7 +84,7 @@ index de1506a..5522e69 100644 - // except when font size is from conditional formatting. - //! Allow clipping when vertically merged? - 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->GetItemState(ATTR_FONT_HEIGHT, true) ) ) + if (UseNormalClip(rParam.mnCellY, rParam.mpCondSet)) @@ -92,7 +92,7 @@ index de1506a..5522e69 100644 else bSimClip = true; @@ -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) diff --git a/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch b/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch index 12868d8..c443cf7 100644 --- a/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch +++ b/openoffice.org-3.1.0.ooo101274.opening-a-directory.patch @@ -29,16 +29,16 @@ index 676acd5..4a599c9 100644 #include +#include + #include #include #include - #include @@ -47,6 +48,8 @@ #include #include #include +#include +#include - #include + #include #include #include @@ -64,6 +67,8 @@ @@ -49,7 +49,7 @@ index 676acd5..4a599c9 100644 + #include #include - #include + #include @@ -71,6 +76,10 @@ #include #include diff --git a/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch b/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch index 4d90bd7..1a52509 100644 --- a/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch +++ b/openoffice.org-3.1.0.oooXXXXX.solenv.allowmissing.patch @@ -5,37 +5,37 @@ retrieving revision 1.17 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/solenv/bin/modules/installer/scriptitems.pm 18 Mar 2005 22:39:42 -0000 -@@ -1066,7 +1066,7 @@ +@@ -963,7 +963,7 @@ } else { -- $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 = "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 } push( @installer::globals::logfileinfo, $infoline); -@@ -1144,7 +1144,7 @@ +@@ -1039,7 +1039,7 @@ } else { -- $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 = "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 } push( @installer::globals::logfileinfo, $infoline); @@ -1356,11 +1356,10 @@ - + if ( ! $installer::globals::languagepack && !$installer::globals::helppack) { - $infoline = "ERROR: Removing file $filename from file list.\n"; + $infoline = "WARNING: Removing file $filename from file list.\n"; push( @installer::globals::logfileinfo, $infoline); -- push(@missingfiles, "ERROR: File not found: $filename\n"); +- push(@missingfiles, "ERROR: File not found: $filename\n"); - $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 @@ { @@ -45,11 +45,11 @@ diff -u -p -r1.17 scriptitems.pm + $infoline = "WARNING: Removing file $filename from file list.\n"; push( @installer::globals::logfileinfo, $infoline); -- push(@missingfiles, "ERROR: File not found: $filename\n"); +- push(@missingfiles, "ERROR: File not found: $filename\n"); - $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 @@ { @@ -59,20 +59,20 @@ diff -u -p -r1.17 scriptitems.pm + $infoline = "WARNING: Removing file $filename from file list.\n"; push( @installer::globals::logfileinfo, $infoline); -- push(@missingfiles, "ERROR: File not found: $filename\n"); +- push(@missingfiles, "ERROR: File not found: $filename\n"); - $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/solenv/bin/modules/installer/simplepackage.pm 2010-07-12 10:27:54.000000000 +0100 @@ -53,7 +53,7 @@ - ( $installer::globals::packageformat eq "archive" )) - { - $installer::globals::is_simple_packager_project = 1; -- $installer::globals::patch_user_dir = 1; -+ $installer::globals::patch_user_dir = 0; - } - elsif( $installer::globals::packageformat eq "dmg" ) - { + ( $installer::globals::packageformat eq "archive" )) + { + $installer::globals::is_simple_packager_project = 1; +- $installer::globals::patch_user_dir = 1; ++ $installer::globals::patch_user_dir = 1; + } + elsif( $installer::globals::packageformat eq "dmg" ) + { diff --git a/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch b/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch index efc5318..2da9afd 100644 --- a/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch +++ b/openoffice.org-3.1.1.ooo105784.vcl.sniffscriptforsubs.patch @@ -23,7 +23,7 @@ index 4d02a76..ecd3b5d 100644 #include @@ -747,6 +750,138 @@ static void addtopattern(FcPattern *pPattern, - } + return 0; } +static const char* pick_sample_language(const sal_uInt32 cCode) diff --git a/sources b/sources index c431b5c..8dc6d3f 100644 --- a/sources +++ b/sources @@ -5,10 +5,8 @@ 185d60944ea767075d27247c3162b3bc 185d60944ea767075d27247c3162b3bc-unowinreg.dll c1b5b8d1dd929a1261a6f8872d92b799 redhat-langpacks.tar.gz 74939c9ea525374776f09bf972ede99f libreoffice-multiliblauncher.sh -fdb27bfe2dbe2e7b57ae194d9bf36bab fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip 1f24ab1d39f4a51faf22244c94a6203f 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz -49164be68b7eeaf4f8070145194b14a1 libreoffice-binfilter-3.6.4.1.tar.xz -ae3aaab557c5f76ad93f70825ec0c6cb libreoffice-core-3.6.4.1.tar.xz -489bf570cd73180b988588714901efa3 libreoffice-help-3.6.4.1.tar.xz -12126bfed467d06b85e1e24647c5c45b libreoffice-translations-3.6.4.1.tar.xz +8200d0c9da3615a09d94068eada02c28 libreoffice-4.0.0.0.alpha1.tar.xz +b3912d2b9f8312a3b85472890997704d libreoffice-help-4.0.0.0.alpha1.tar.xz +9dfdbac725c0a31b411026108cf7cf22 libreoffice-translations-4.0.0.0.alpha1.tar.xz