parent
3500bf7f0d
commit
a2f244f982
@ -1,257 +0,0 @@
|
||||
From 2efa35a812a6f1e35e4959a357f50feff7e598f5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Tue, 6 Nov 2012 23:21:06 +0000
|
||||
Subject: [PATCH] Resolves: fdo#56198 collect scrollbar click preference
|
||||
settings
|
||||
|
||||
for gtk and merge with aqua equivalent so as to alternate "jump to here"
|
||||
behavior for primary button vs primary means scroll by single page. Secondary
|
||||
button takes the alternative behaviour
|
||||
|
||||
Change-Id: I0a96f3131f41ec87052da39cbe96bfd895ca53f6
|
||||
---
|
||||
vcl/aqua/source/window/salframe.cxx | 6 +++---
|
||||
vcl/inc/svdata.hxx | 1 -
|
||||
vcl/inc/vcl/settings.hxx | 17 ++++++++++++-----
|
||||
vcl/source/app/settings.cxx | 15 +++++++++------
|
||||
vcl/source/control/scrbar.cxx | 24 ++++++++++++++++--------
|
||||
vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 10 +++++++---
|
||||
vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 10 +++++++---
|
||||
7 files changed, 54 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/vcl/aqua/source/window/salframe.cxx b/vcl/aqua/source/window/salframe.cxx
|
||||
index 924210d..cf7c048 100644
|
||||
--- a/vcl/aqua/source/window/salframe.cxx
|
||||
+++ b/vcl/aqua/source/window/salframe.cxx
|
||||
@@ -1146,7 +1146,7 @@ rtl::OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode )
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
-static void getAppleScrollBarVariant(void)
|
||||
+static void getAppleScrollBarVariant(StyleSettings &rSettings)
|
||||
{
|
||||
bool bIsScrollbarDoubleMax = true; // default is DoubleMax
|
||||
|
||||
@@ -1183,7 +1183,7 @@ static void getAppleScrollBarVariant(void)
|
||||
if( jumpStr )
|
||||
{
|
||||
if( CFGetTypeID( jumpStr ) == CFBooleanGetTypeID() )
|
||||
- ImplGetSVData()->maNWFData.mbScrollbarJumpPage = (jumpStr == kCFBooleanTrue);
|
||||
+ rSettings.SetPrimaryButtonWarpsSlider(jumpStr == kCFBooleanTrue);
|
||||
CFRelease( jumpStr );
|
||||
}
|
||||
CFRelease( jumpScroll );
|
||||
@@ -1324,7 +1324,7 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings )
|
||||
// no mnemonics on aqua
|
||||
aStyleSettings.SetOptions( aStyleSettings.GetOptions() | STYLE_OPTION_NOMNEMONICS );
|
||||
|
||||
- getAppleScrollBarVariant();
|
||||
+ getAppleScrollBarVariant(aStyleSettings);
|
||||
|
||||
// set scrollbar size
|
||||
aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidth]) );
|
||||
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
|
||||
index af547e9..974a67f 100644
|
||||
--- a/vcl/inc/svdata.hxx
|
||||
+++ b/vcl/inc/svdata.hxx
|
||||
@@ -294,7 +294,6 @@ struct ImplSVNWFData
|
||||
bool mbCheckBoxNeedsErase:1; // set true for platforms that should draw the
|
||||
// window background before drawing the native
|
||||
// checkbox
|
||||
- bool mbScrollbarJumpPage:1; // true for "jump to here" behavior
|
||||
bool mbCanDrawWidgetAnySize:1; // set to true currently on gtk
|
||||
};
|
||||
|
||||
diff --git a/vcl/inc/vcl/settings.hxx b/vcl/inc/vcl/settings.hxx
|
||||
index 9a0a856..1052b49 100644
|
||||
--- a/vcl/inc/vcl/settings.hxx
|
||||
+++ b/vcl/inc/vcl/settings.hxx
|
||||
@@ -323,7 +323,10 @@
|
||||
sal_uLong mnPreferredSymbolsStyle;
|
||||
sal_uInt16 mnSkipDisabledInMenus;
|
||||
sal_Bool mbHideDisabledMenuItems;
|
||||
- sal_Bool mnAcceleratorsInContextMenus;
|
||||
+ sal_Bool mbAcceleratorsInContextMenus;
|
||||
+ //mbPrimaryButtonWarpsSlider == true for "jump to here" behavior for primary button, otherwise
|
||||
+ //primary means scroll by single page. Secondary button takes the alternative behaviour
|
||||
+ sal_Bool mbPrimaryButtonWarpsSlider;
|
||||
Wallpaper maWorkspaceGradient;
|
||||
const void* mpFontOptions;
|
||||
};
|
||||
@@ -628,10 +631,14 @@
|
||||
{ CopyData(); mpData->mbHideDisabledMenuItems = bHideDisabledMenuItems; }
|
||||
sal_Bool GetHideDisabledMenuItems() const
|
||||
{ return mpData->mbHideDisabledMenuItems; }
|
||||
- void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus )
|
||||
- { CopyData(); mpData->mnAcceleratorsInContextMenus = bAcceleratorsInContextMenus; }
|
||||
- sal_Bool GetAcceleratorsInContextMenus() const
|
||||
- { return mpData->mnAcceleratorsInContextMenus; }
|
||||
+ void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus )
|
||||
+ { CopyData(); mpData->mbAcceleratorsInContextMenus = bAcceleratorsInContextMenus; }
|
||||
+ sal_Bool GetAcceleratorsInContextMenus() const
|
||||
+ { return mpData->mbAcceleratorsInContextMenus; }
|
||||
+ void SetPrimaryButtonWarpsSlider( sal_Bool bPrimaryButtonWarpsSlider )
|
||||
+ { CopyData(); mpData->mbPrimaryButtonWarpsSlider = bPrimaryButtonWarpsSlider; }
|
||||
+ sal_Bool GetPrimaryButtonWarpsSlider() const
|
||||
+ { return mpData->mbPrimaryButtonWarpsSlider; }
|
||||
|
||||
void SetCairoFontOptions( const void *pOptions )
|
||||
{ CopyData(); mpData->mpFontOptions = pOptions; }
|
||||
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
|
||||
index 273e118..a2acdad 100644
|
||||
--- a/vcl/source/app/settings.cxx
|
||||
+++ b/vcl/source/app/settings.cxx
|
||||
@@ -337,11 +337,12 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
|
||||
mnUseImagesInMenus = rData.mnUseImagesInMenus;
|
||||
mbPreferredUseImagesInMenus = rData.mbPreferredUseImagesInMenus;
|
||||
mnSkipDisabledInMenus = rData.mnSkipDisabledInMenus;
|
||||
- mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems;
|
||||
- mnAcceleratorsInContextMenus = rData.mnAcceleratorsInContextMenus;
|
||||
+ mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems;
|
||||
+ mbAcceleratorsInContextMenus = rData.mbAcceleratorsInContextMenus;
|
||||
+ mbPrimaryButtonWarpsSlider = rData.mbPrimaryButtonWarpsSlider;
|
||||
mnToolbarIconSize = rData.mnToolbarIconSize;
|
||||
mnSymbolsStyle = rData.mnSymbolsStyle;
|
||||
- mnPreferredSymbolsStyle = rData.mnPreferredSymbolsStyle;
|
||||
+ mnPreferredSymbolsStyle = rData.mnPreferredSymbolsStyle;
|
||||
mpFontOptions = rData.mpFontOptions;
|
||||
}
|
||||
|
||||
@@ -425,10 +426,11 @@ void ImplStyleData::SetStandardStyles()
|
||||
mnUseSystemUIFonts = 1;
|
||||
mnUseFlatBorders = 0;
|
||||
mnUseFlatMenues = 0;
|
||||
- mbPreferredUseImagesInMenus = sal_True;
|
||||
+ mbPreferredUseImagesInMenus = sal_True;
|
||||
mnSkipDisabledInMenus = (sal_uInt16)sal_False;
|
||||
mbHideDisabledMenuItems = sal_False;
|
||||
- mnAcceleratorsInContextMenus = sal_True;
|
||||
+ mbAcceleratorsInContextMenus = sal_True;
|
||||
+ mbPrimaryButtonWarpsSlider = sal_False;
|
||||
|
||||
Gradient aGrad( GradientStyle_LINEAR, DEFAULT_WORKSPACE_GRADIENT_START_COLOR, DEFAULT_WORKSPACE_GRADIENT_END_COLOR );
|
||||
maWorkspaceGradient = Wallpaper( aGrad );
|
||||
@@ -852,7 +854,8 @@ sal_Bool StyleSettings::operator ==( const StyleSettings& rSet ) const
|
||||
(mpData->mbPreferredUseImagesInMenus == rSet.mpData->mbPreferredUseImagesInMenus) &&
|
||||
(mpData->mnSkipDisabledInMenus == rSet.mpData->mnSkipDisabledInMenus) &&
|
||||
(mpData->mbHideDisabledMenuItems == rSet.mpData->mbHideDisabledMenuItems) &&
|
||||
- (mpData->mnAcceleratorsInContextMenus == rSet.mpData->mnAcceleratorsInContextMenus) &&
|
||||
+ (mpData->mbAcceleratorsInContextMenus == rSet.mpData->mbAcceleratorsInContextMenus)&&
|
||||
+ (mpData->mbPrimaryButtonWarpsSlider == rSet.mpData->mbPrimaryButtonWarpsSlider) &&
|
||||
(mpData->maFontColor == rSet.mpData->maFontColor ))
|
||||
return sal_True;
|
||||
else
|
||||
diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx
|
||||
index dad66f6..9e90362 100644
|
||||
--- a/vcl/source/control/scrbar.cxx
|
||||
+++ b/vcl/source/control/scrbar.cxx
|
||||
@@ -948,7 +948,12 @@
|
||||
|
||||
void ScrollBar::MouseButtonDown( const MouseEvent& rMEvt )
|
||||
{
|
||||
- if ( rMEvt.IsLeft() || rMEvt.IsMiddle() )
|
||||
+ bool bPrimaryWarps = GetSettings().GetStyleSettings().GetPrimaryButtonWarpsSlider();
|
||||
+ bool bWarp = bPrimaryWarps ? rMEvt.IsLeft() : rMEvt.IsMiddle();
|
||||
+ bool bPrimaryWarping = bWarp && rMEvt.IsLeft();
|
||||
+ bool bPage = bPrimaryWarps ? rMEvt.IsRight() : rMEvt.IsLeft();
|
||||
+
|
||||
+ if (rMEvt.IsLeft() || rMEvt.IsMiddle() || rMEvt.IsRight())
|
||||
{
|
||||
const Point& rMousePos = rMEvt.GetPosPixel();
|
||||
sal_uInt16 nTrackFlags = 0;
|
||||
@@ -964,7 +969,7 @@
|
||||
bIsInside:
|
||||
maBtn1Rect.IsInside( rMousePos ) )
|
||||
{
|
||||
- if ( !(mnStateFlags & SCRBAR_STATE_BTN1_DISABLE) )
|
||||
+ if (rMEvt.IsLeft() && !(mnStateFlags & SCRBAR_STATE_BTN1_DISABLE) )
|
||||
{
|
||||
nTrackFlags = STARTTRACK_BUTTONREPEAT;
|
||||
meScrollType = SCROLL_LINEUP;
|
||||
@@ -978,7 +983,7 @@
|
||||
bIsInside:
|
||||
maBtn2Rect.IsInside( rMousePos ) )
|
||||
{
|
||||
- if ( !(mnStateFlags & SCRBAR_STATE_BTN2_DISABLE) )
|
||||
+ if (rMEvt.IsLeft() && !(mnStateFlags & SCRBAR_STATE_BTN2_DISABLE) )
|
||||
{
|
||||
nTrackFlags = STARTTRACK_BUTTONREPEAT;
|
||||
meScrollType = SCROLL_LINEDOWN;
|
||||
@@ -992,7 +997,10 @@
|
||||
bool bThumbHit = HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_THUMB_HORZ : PART_THUMB_VERT,
|
||||
maThumbRect, rMousePos, bIsInside )
|
||||
? bIsInside : maThumbRect.IsInside( rMousePos );
|
||||
- bool bDragHandling = rMEvt.IsMiddle() || bThumbHit || ImplGetSVData()->maNWFData.mbScrollbarJumpPage;
|
||||
+
|
||||
+ bool bThumbAction = bWarp || bPage;
|
||||
+
|
||||
+ bool bDragHandling = bWarp || (bThumbHit && bThumbAction);
|
||||
if( bDragHandling )
|
||||
{
|
||||
if( mpData )
|
||||
@@ -1009,7 +1017,7 @@
|
||||
mnDragDraw = SCRBAR_DRAW_THUMB;
|
||||
|
||||
// calculate mouse offset
|
||||
- if( rMEvt.IsMiddle() || (ImplGetSVData()->maNWFData.mbScrollbarJumpPage && !bThumbHit) )
|
||||
+ if (bWarp && (!bThumbHit || !bPrimaryWarping))
|
||||
{
|
||||
bDragToMouse = sal_True;
|
||||
if ( GetStyle() & WB_HORZ )
|
||||
@@ -1031,9 +1039,9 @@
|
||||
else
|
||||
Sound::Beep( SOUND_DISABLE, this );
|
||||
}
|
||||
- else if( HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA,
|
||||
+ else if(bPage && (HitTestNativeControl( CTRL_SCROLLBAR, bHorizontal? PART_TRACK_HORZ_AREA : PART_TRACK_VERT_AREA,
|
||||
aControlRegion, rMousePos, bIsInside )?
|
||||
- bIsInside : sal_True )
|
||||
+ bIsInside : sal_True) )
|
||||
{
|
||||
nTrackFlags = STARTTRACK_BUTTONREPEAT;
|
||||
|
||||
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
|
||||
index 65df181..1451476 100644
|
||||
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
|
||||
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
|
||||
@@ -3987,9 +3987,13 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
|
||||
aMouseSettings.SetMenuDelay( iMenuPopupDelay );
|
||||
rSettings.SetMouseSettings( aMouseSettings );
|
||||
|
||||
- gboolean showmenuicons = true;
|
||||
- g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL );
|
||||
- aStyleSet.SetPreferredUseImagesInMenus( showmenuicons );
|
||||
+ gboolean showmenuicons = true, primarybuttonwarps = false;
|
||||
+ g_object_get( pSettings,
|
||||
+ "gtk-menu-images", &showmenuicons,
|
||||
+ "gtk-primary-button-warps-slider", &primarybuttonwarps,
|
||||
+ (char *)NULL );
|
||||
+ aStyleSet.SetPreferredUseImagesInMenus(showmenuicons);
|
||||
+ aStyleSet.SetPrimaryButtonWarpsSlider(primarybuttonwarps);
|
||||
|
||||
// set scrollbar settings
|
||||
gint slider_width = 14;
|
||||
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
|
||||
index 0774699f..1037d9d 100644
|
||||
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
|
||||
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
|
||||
@@ -1376,9 +1376,13 @@ void GtkSalGraphics::updateSettings( AllSettings& rSettings )
|
||||
aMouseSettings.SetMenuDelay( iMenuPopupDelay );
|
||||
rSettings.SetMouseSettings( aMouseSettings );
|
||||
|
||||
- gboolean showmenuicons = true;
|
||||
- g_object_get( pSettings, "gtk-menu-images", &showmenuicons, (char *)NULL );
|
||||
- aStyleSet.SetPreferredUseImagesInMenus( showmenuicons );
|
||||
+ gboolean showmenuicons = true, primarybuttonwarps = false;
|
||||
+ g_object_get( pSettings,
|
||||
+ "gtk-menu-images", &showmenuicons,
|
||||
+ "gtk-primary-button-warps-slider", &primarybuttonwarps,
|
||||
+ (char *)NULL );
|
||||
+ aStyleSet.SetPreferredUseImagesInMenus(showmenuicons);
|
||||
+ aStyleSet.SetPrimaryButtonWarpsSlider(primarybuttonwarps);
|
||||
|
||||
// set scrollbar settings
|
||||
gint slider_width = 14;
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,970 +0,0 @@
|
||||
diff -ru libreoffice-3.5.5.3.orig/cui/source/options/optlingu.cxx libreoffice-3.5.5.3/cui/source/options/optlingu.cxx
|
||||
--- libreoffice-3.5.5.3.orig/cui/source/options/optlingu.cxx 2012-07-13 12:37:15.032259144 +0100
|
||||
+++ libreoffice-3.5.5.3/cui/source/options/optlingu.cxx 2012-07-16 08:49:26.294209540 +0100
|
||||
@@ -1150,12 +1150,6 @@
|
||||
aLinguDicsEditPB.SetAccessibleName(sAccessibleNameDicsEdit);
|
||||
aLinguOptionsEditPB.SetAccessibleName(sAccessibleNameOptionEdit);
|
||||
|
||||
- // force recalculation of hash value used for checking the need of updating
|
||||
- // because new dictionaries might be installed / downloaded.
|
||||
- //! Thus it needs to be called now since it may infuence the supported languages
|
||||
- //! to be reported AND the found user-dictionaries(!) as well.
|
||||
- SvxLinguConfigUpdate::UpdateAll( sal_True );
|
||||
-
|
||||
xProp = uno::Reference< XPropertySet >( SvxGetLinguPropertySet(), UNO_QUERY );
|
||||
xDicList = uno::Reference< XDictionaryList >( SvxGetDictionaryList(), UNO_QUERY );
|
||||
if (xDicList.is())
|
||||
diff -ru libreoffice-3.5.5.3.orig/editeng/inc/editeng/unolingu.hxx libreoffice-3.5.5.3/editeng/inc/editeng/unolingu.hxx
|
||||
--- libreoffice-3.5.5.3.orig/editeng/inc/editeng/unolingu.hxx 2012-07-13 12:37:16.109269892 +0100
|
||||
+++ libreoffice-3.5.5.3/editeng/inc/editeng/unolingu.hxx 2012-07-16 08:49:26.294209540 +0100
|
||||
@@ -46,29 +46,6 @@
|
||||
class Window;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
-// SvxLinguConfigUpdate
|
||||
-// class to update configuration items when (before!) the linguistic is used.
|
||||
-//
|
||||
-// This class is called by all the dummy implementations to update all of the
|
||||
-// configuration (list of used/available services) when the linguistic is
|
||||
-// accessed for the first time.
|
||||
-
|
||||
-class SvxLinguConfigUpdate
|
||||
-{
|
||||
- static sal_Int32 nCurrentDataFilesChangedCheckValue;
|
||||
- static sal_Int16 nNeedUpdating; // n == -1 => needs to be checked
|
||||
- // n == 0 => already updated, nothing to be done
|
||||
- // n == 1 => needs to be updated
|
||||
-
|
||||
- static sal_Int32 CalcDataFilesChangedCheckValue();
|
||||
-
|
||||
-public:
|
||||
-
|
||||
- EDITENG_DLLPUBLIC static void UpdateAll( sal_Bool bForceCheck = sal_False );
|
||||
- static sal_Bool IsNeedUpdateAll( sal_Bool bForceCheck = sal_False );
|
||||
-};
|
||||
-
|
||||
-///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class EDITENG_DLLPUBLIC LinguMgr
|
||||
{
|
||||
diff -ru libreoffice-3.5.5.3.orig/editeng/source/misc/unolingu.cxx libreoffice-3.5.5.3/editeng/source/misc/unolingu.cxx
|
||||
--- libreoffice-3.5.5.3.orig/editeng/source/misc/unolingu.cxx 2012-07-13 12:37:15.900267806 +0100
|
||||
+++ libreoffice-3.5.5.3/editeng/source/misc/unolingu.cxx 2012-07-16 08:52:53.919596778 +0100
|
||||
@@ -90,365 +90,6 @@
|
||||
return xRes;
|
||||
}
|
||||
|
||||
-sal_Bool lcl_FindEntry( const OUString &rEntry, const Sequence< OUString > &rCfgSvcs )
|
||||
-{
|
||||
- sal_Int32 nRes = -1;
|
||||
- sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
- const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nEntries && nRes == -1; ++i)
|
||||
- {
|
||||
- if (rEntry == pEntry[i])
|
||||
- nRes = i;
|
||||
- }
|
||||
- return nRes != -1;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_RemoveMissingEntries(
|
||||
- const Sequence< OUString > &rCfgSvcs,
|
||||
- const Sequence< OUString > &rAvailSvcs )
|
||||
-{
|
||||
- Sequence< OUString > aRes( rCfgSvcs.getLength() );
|
||||
- OUString *pRes = aRes.getArray();
|
||||
- sal_Int32 nCnt = 0;
|
||||
-
|
||||
- sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
- const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nEntries; ++i)
|
||||
- {
|
||||
- if (!pEntry[i].isEmpty() && lcl_FindEntry( pEntry[i], rAvailSvcs ))
|
||||
- pRes[ nCnt++ ] = pEntry[i];
|
||||
- }
|
||||
-
|
||||
- aRes.realloc( nCnt );
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_GetLastFoundSvcs(
|
||||
- SvtLinguConfig &rCfg,
|
||||
- const OUString &rLastFoundList ,
|
||||
- const Locale &rAvailLocale )
|
||||
-{
|
||||
- Sequence< OUString > aRes;
|
||||
-
|
||||
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
- SvxLocaleToLanguage( rAvailLocale ) ) );
|
||||
-
|
||||
- Sequence< OUString > aNodeNames( rCfg.GetNodeNames(rLastFoundList) );
|
||||
- sal_Bool bFound = lcl_FindEntry( aCfgLocaleStr, aNodeNames);
|
||||
-
|
||||
- if (bFound)
|
||||
- {
|
||||
- Sequence< OUString > aNames(1);
|
||||
- OUString &rNodeName = aNames.getArray()[0];
|
||||
- rNodeName = rLastFoundList;
|
||||
- rNodeName += OUString::valueOf( (sal_Unicode)'/' );
|
||||
- rNodeName += aCfgLocaleStr;
|
||||
- Sequence< Any > aValues( rCfg.GetProperties( aNames ) );
|
||||
- if (aValues.getLength())
|
||||
- {
|
||||
- OSL_ENSURE( aValues.getLength() == 1, "unexpected length of sequence" );
|
||||
- Sequence< OUString > aSvcImplNames;
|
||||
- if (aValues.getConstArray()[0] >>= aSvcImplNames)
|
||||
- aRes = aSvcImplNames;
|
||||
- else
|
||||
- {
|
||||
- OSL_FAIL( "type mismatch" );
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_GetNewEntries(
|
||||
- const Sequence< OUString > &rLastFoundSvcs,
|
||||
- const Sequence< OUString > &rAvailSvcs )
|
||||
-{
|
||||
- sal_Int32 nLen = rAvailSvcs.getLength();
|
||||
- Sequence< OUString > aRes( nLen );
|
||||
- OUString *pRes = aRes.getArray();
|
||||
- sal_Int32 nCnt = 0;
|
||||
-
|
||||
- const OUString *pEntry = rAvailSvcs.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
- {
|
||||
- if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], rLastFoundSvcs ))
|
||||
- pRes[ nCnt++ ] = pEntry[i];
|
||||
- }
|
||||
-
|
||||
- aRes.realloc( nCnt );
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-Sequence< OUString > lcl_MergeSeq(
|
||||
- const Sequence< OUString > &rCfgSvcs,
|
||||
- const Sequence< OUString > &rNewSvcs )
|
||||
-{
|
||||
- Sequence< OUString > aRes( rCfgSvcs.getLength() + rNewSvcs.getLength() );
|
||||
- OUString *pRes = aRes.getArray();
|
||||
- sal_Int32 nCnt = 0;
|
||||
-
|
||||
- for (sal_Int32 k = 0; k < 2; ++k)
|
||||
- {
|
||||
- // add previously configuerd service first and append
|
||||
- // new found services at the end
|
||||
- const Sequence< OUString > &rSeq = k == 0 ? rCfgSvcs : rNewSvcs;
|
||||
-
|
||||
- sal_Int32 nLen = rSeq.getLength();
|
||||
- const OUString *pEntry = rSeq.getConstArray();
|
||||
- for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
- {
|
||||
- if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], aRes ))
|
||||
- pRes[ nCnt++ ] = pEntry[i];
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- aRes.realloc( nCnt );
|
||||
- return aRes;
|
||||
-}
|
||||
-
|
||||
-sal_Int16 SvxLinguConfigUpdate::nNeedUpdating = -1;
|
||||
-sal_Int32 SvxLinguConfigUpdate::nCurrentDataFilesChangedCheckValue = -1;
|
||||
-
|
||||
-void SvxLinguConfigUpdate::UpdateAll( sal_Bool bForceCheck )
|
||||
-{
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll" );
|
||||
-
|
||||
- if (IsNeedUpdateAll( bForceCheck ))
|
||||
- {
|
||||
- typedef OUString OUstring_t;
|
||||
- typedef Sequence< OUString > Sequence_OUString_t;
|
||||
- typedef std::map< OUstring_t, Sequence_OUString_t > list_entry_map_t;
|
||||
-
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll - updating..." );
|
||||
-
|
||||
- OSL_ENSURE( nNeedUpdating == 1, "SvxLinguConfigUpdate::UpdateAll already updated!" );
|
||||
-
|
||||
- uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
- OSL_ENSURE( xLngSvcMgr.is(), "service manager missing");
|
||||
- if (!xLngSvcMgr.is())
|
||||
- return;
|
||||
-
|
||||
- SvtLinguConfig aCfg;
|
||||
-
|
||||
- const int nNumServices = 4;
|
||||
- const sal_Char * apServices[nNumServices] = { SN_SPELLCHECKER, SN_GRAMMARCHECKER, SN_HYPHENATOR, SN_THESAURUS };
|
||||
- const sal_Char * apCurLists[nNumServices] = { "ServiceManager/SpellCheckerList", "ServiceManager/GrammarCheckerList", "ServiceManager/HyphenatorList", "ServiceManager/ThesaurusList" };
|
||||
- const sal_Char * apLastFoundLists[nNumServices] = { "ServiceManager/LastFoundSpellCheckers", "ServiceManager/LastFoundGrammarCheckers", "ServiceManager/LastFoundHyphenators", "ServiceManager/LastFoundThesauri" };
|
||||
-
|
||||
- // usage of indices as above: 0 = spell checker, 1 = grammar checker, 2 = hyphenator, 3 = thesaurus
|
||||
- std::vector< list_entry_map_t > aLastFoundSvcs(nNumServices);
|
||||
- std::vector< list_entry_map_t > aCurSvcs(nNumServices);
|
||||
-
|
||||
- for (int k = 0; k < nNumServices; ++k)
|
||||
- {
|
||||
- OUString aService( ::rtl::OUString::createFromAscii( apServices[k] ) );
|
||||
- OUString aActiveList( ::rtl::OUString::createFromAscii( apCurLists[k] ) );
|
||||
- OUString aLastFoundList( ::rtl::OUString::createFromAscii( apLastFoundLists[k] ) );
|
||||
- sal_Int32 i;
|
||||
-
|
||||
- //
|
||||
- // remove configured but not available language/services entries
|
||||
- //
|
||||
- Sequence< OUString > aNodeNames( aCfg.GetNodeNames( aActiveList ) ); // list of configured locales
|
||||
- sal_Int32 nNodeNames = aNodeNames.getLength();
|
||||
- const OUString *pNodeName = aNodeNames.getConstArray();
|
||||
- for (i = 0; i < nNodeNames; ++i)
|
||||
- {
|
||||
- Locale aLocale( SvxCreateLocale( MsLangId::convertIsoStringToLanguage(pNodeName[i]) ) );
|
||||
- Sequence< OUString > aCfgSvcs(
|
||||
- xLngSvcMgr->getConfiguredServices( aService, aLocale ));
|
||||
- Sequence< OUString > aAvailSvcs(
|
||||
- xLngSvcMgr->getAvailableServices( aService, aLocale ));
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- const OUString * pCfgSvcs = aCfgSvcs.getConstArray();
|
||||
- const OUString * pAvailSvcs = aAvailSvcs.getConstArray();
|
||||
- (void) pCfgSvcs;
|
||||
- (void) pAvailSvcs;
|
||||
-#endif
|
||||
- aCfgSvcs = lcl_RemoveMissingEntries( aCfgSvcs, aAvailSvcs );
|
||||
-
|
||||
- aCurSvcs[k][ pNodeName[i] ] = aCfgSvcs;
|
||||
- }
|
||||
-
|
||||
- //
|
||||
- // add new available language/servcice entries
|
||||
- //
|
||||
- uno::Reference< XAvailableLocales > xAvail( xLngSvcMgr, UNO_QUERY );
|
||||
- Sequence< Locale > aAvailLocales( xAvail->getAvailableLocales(aService) );
|
||||
- sal_Int32 nAvailLocales = aAvailLocales.getLength();
|
||||
- const Locale *pAvailLocale = aAvailLocales.getConstArray();
|
||||
- for (i = 0; i < nAvailLocales; ++i)
|
||||
- {
|
||||
- Sequence< OUString > aAvailSvcs(
|
||||
- xLngSvcMgr->getAvailableServices( aService, pAvailLocale[i] ));
|
||||
- Sequence< OUString > aLastSvcs(
|
||||
- lcl_GetLastFoundSvcs( aCfg, aLastFoundList , pAvailLocale[i] ));
|
||||
- Sequence< OUString > aNewSvcs =
|
||||
- lcl_GetNewEntries( aLastSvcs, aAvailSvcs );
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- const OUString * pAvailSvcs = aAvailSvcs.getConstArray();
|
||||
- const OUString * pLastSvcs = aLastSvcs.getConstArray();
|
||||
- const OUString * pNewSvcs = aNewSvcs.getConstArray();
|
||||
- (void) pAvailSvcs;
|
||||
- (void) pLastSvcs;
|
||||
- (void) pNewSvcs;
|
||||
-#endif
|
||||
-
|
||||
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
- SvxLocaleToLanguage( pAvailLocale[i] ) ) );
|
||||
- Sequence< OUString > aCfgSvcs( aCurSvcs[k][ aCfgLocaleStr ] );
|
||||
-
|
||||
- // merge services list (previously configured to be listed first).
|
||||
- aCfgSvcs = lcl_MergeSeq( aCfgSvcs, aNewSvcs );
|
||||
-
|
||||
-/*
|
||||
- // there is at most one Hyphenator per language allowed
|
||||
- // to be configured, thus we only use the first one found.
|
||||
- if (k == 2 && aCfgSvcs.getLength() > 1)
|
||||
- aCfgSvcs.realloc(1);
|
||||
-*/
|
||||
- aCurSvcs[k][ aCfgLocaleStr ] = aCfgSvcs;
|
||||
- }
|
||||
-
|
||||
- //
|
||||
- // set last found services to currently available ones
|
||||
- //
|
||||
- for (i = 0; i < nAvailLocales; ++i)
|
||||
- {
|
||||
- Sequence< OUString > aSvcImplNames(
|
||||
- xLngSvcMgr->getAvailableServices( aService, pAvailLocale[i] ) );
|
||||
-
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- sal_Int32 nSvcs = aSvcImplNames.getLength();
|
||||
- const OUString *pSvcImplName = aSvcImplNames.getConstArray();
|
||||
- for (sal_Int32 j = 0; j < nSvcs; ++j)
|
||||
- {
|
||||
- OUString aImplName( pSvcImplName[j] );
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
- OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
- SvxLocaleToLanguage( pAvailLocale[i] ) ) );
|
||||
- aLastFoundSvcs[k][ aCfgLocaleStr ] = aSvcImplNames;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- //
|
||||
- // write new data back to configuration
|
||||
- //
|
||||
- for (int k = 0; k < nNumServices; ++k)
|
||||
- {
|
||||
- for (int i = 0; i < 2; ++i)
|
||||
- {
|
||||
- const sal_Char *pSubNodeName = (i == 0) ? apCurLists[k] : apLastFoundLists[k];
|
||||
- OUString aSubNodeName( ::rtl::OUString::createFromAscii(pSubNodeName) );
|
||||
-
|
||||
- list_entry_map_t &rCurMap = (i == 0) ? aCurSvcs[k] : aLastFoundSvcs[k];
|
||||
- list_entry_map_t::const_iterator aIt( rCurMap.begin() );
|
||||
- sal_Int32 nVals = static_cast< sal_Int32 >( rCurMap.size() );
|
||||
- Sequence< PropertyValue > aNewValues( nVals );
|
||||
- PropertyValue *pNewValue = aNewValues.getArray();
|
||||
- while (aIt != rCurMap.end())
|
||||
- {
|
||||
- OUString aCfgEntryName( aSubNodeName );
|
||||
- aCfgEntryName += OUString::valueOf( (sal_Unicode) '/' );
|
||||
- aCfgEntryName += (*aIt).first;
|
||||
-
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- Sequence< OUString > aSvcImplNames( (*aIt).second );
|
||||
- sal_Int32 nSvcs = aSvcImplNames.getLength();
|
||||
- const OUString *pSvcImplName = aSvcImplNames.getConstArray();
|
||||
- for (sal_Int32 j = 0; j < nSvcs; ++j)
|
||||
- {
|
||||
- OUString aImplName( pSvcImplName[j] );
|
||||
- }
|
||||
-#endif
|
||||
- pNewValue->Name = aCfgEntryName;
|
||||
- pNewValue->Value <<= (*aIt).second;
|
||||
- ++pNewValue;
|
||||
- ++aIt;
|
||||
- }
|
||||
- OSL_ENSURE( pNewValue - aNewValues.getArray() == nVals,
|
||||
- "possible mismatch of sequence size and property number" );
|
||||
-
|
||||
- {
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::UpdateAll - ReplaceSetProperties" );
|
||||
- // add new or replace existing entries.
|
||||
- sal_Bool bRes = aCfg.ReplaceSetProperties( aSubNodeName, aNewValues );
|
||||
- if (!bRes)
|
||||
- {
|
||||
-#if OSL_DEBUG_LEVEL > 1
|
||||
- OSL_FAIL( "failed to set new configuration values" );
|
||||
-#endif
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- OSL_ENSURE( nCurrentDataFilesChangedCheckValue != -1, "SvxLinguConfigUpdate::UpdateAll DataFilesChangedCheckValue not yet calculated!" );
|
||||
- Any aAny;
|
||||
-
|
||||
- // for the time being (developer builds until OOo 3.0)
|
||||
- // we should always check for everything available
|
||||
- // otherwise we may miss a new installed extension dicitonary
|
||||
- // just because e.g. the spellchecker is not asked what
|
||||
- // languages it does support currently...
|
||||
- // Since the check is on-demand occuring and executed once it should
|
||||
- // not be too troublesome.
|
||||
- // In OOo 3.0 we will not need the respective code anymore at all.
|
||||
-// aAny <<= nCurrentDataFilesChangedCheckValue;
|
||||
- aAny <<= (sal_Int32) -1; // keep the value set to 'need to check'
|
||||
-
|
||||
- aCfg.SetProperty( A2OU( "DataFilesChangedCheckValue" ), aAny );
|
||||
-
|
||||
- //! Note 1: the new values are commited when the 'aCfg' object
|
||||
- //! gets destroyed.
|
||||
- //! Note 2: the new settings in the configuration get applied
|
||||
- //! because the 'LngSvcMgr' (in linguistic/source/lngsvcmgr.hxx)
|
||||
- //! listens to the configuration for changes of the relevant
|
||||
- //! properties and then applies the new settings.
|
||||
-
|
||||
- // nothing needs to be done anymore
|
||||
- nNeedUpdating = 0;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-
|
||||
-sal_Int32 SvxLinguConfigUpdate::CalcDataFilesChangedCheckValue()
|
||||
-{
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::CalcDataFilesChangedCheckValue" );
|
||||
-
|
||||
- sal_Int32 nHashVal = 0;
|
||||
- // nothing to be checked anymore since those old directory paths are gone by now
|
||||
- return nHashVal;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-sal_Bool SvxLinguConfigUpdate::IsNeedUpdateAll( sal_Bool bForceCheck )
|
||||
-{
|
||||
- RTL_LOGFILE_CONTEXT( aLog, "svx: SvxLinguConfigUpdate::IsNeedUpdateAll" );
|
||||
- if (nNeedUpdating == -1 || bForceCheck ) // need to check if updating is necessary
|
||||
- {
|
||||
- // calculate hash value for current data files
|
||||
- nCurrentDataFilesChangedCheckValue = CalcDataFilesChangedCheckValue();
|
||||
-
|
||||
- // compare hash value and check value to see if anything has changed
|
||||
- // and thus the configuration needs to be updated
|
||||
- SvtLinguOptions aLinguOpt;
|
||||
- SvtLinguConfig aCfg;
|
||||
- aCfg.GetOptions( aLinguOpt );
|
||||
- nNeedUpdating = (nCurrentDataFilesChangedCheckValue == aLinguOpt.nDataFilesChangedCheckValue) ? 0 : 1;
|
||||
- }
|
||||
- OSL_ENSURE( nNeedUpdating != -1,
|
||||
- "need for linguistic configuration update should have been already checked." );
|
||||
-
|
||||
- return nNeedUpdating == 1;
|
||||
-}
|
||||
-
|
||||
|
||||
//! Dummy implementation in order to avoid loading of lingu DLL
|
||||
//! when only the XSupportedLocales interface is used.
|
||||
@@ -520,10 +158,6 @@
|
||||
|
||||
void ThesDummy_Impl::GetThes_Impl()
|
||||
{
|
||||
- // update configuration before accessing the service
|
||||
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
|
||||
- SvxLinguConfigUpdate::UpdateAll();
|
||||
-
|
||||
if (!xThes.is())
|
||||
{
|
||||
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
@@ -543,8 +177,7 @@
|
||||
ThesDummy_Impl::getLocales()
|
||||
throw(uno::RuntimeException)
|
||||
{
|
||||
- if (!SvxLinguConfigUpdate::IsNeedUpdateAll()) // configuration already update and thus lingu DLL's already loaded ?
|
||||
- GetThes_Impl();
|
||||
+ GetThes_Impl();
|
||||
if (xThes.is())
|
||||
return xThes->getLocales();
|
||||
else if (!pLocaleSeq) // if not already loaded save startup time by avoiding loading them now
|
||||
@@ -557,8 +190,7 @@
|
||||
ThesDummy_Impl::hasLocale( const lang::Locale& rLocale )
|
||||
throw(uno::RuntimeException)
|
||||
{
|
||||
- if (!SvxLinguConfigUpdate::IsNeedUpdateAll()) // configuration already update and thus lingu DLL's already loaded ?
|
||||
- GetThes_Impl();
|
||||
+ GetThes_Impl();
|
||||
if (xThes.is())
|
||||
return xThes->hasLocale( rLocale );
|
||||
else if (!pLocaleSeq) // if not already loaded save startup time by avoiding loading them now
|
||||
@@ -632,10 +264,6 @@
|
||||
|
||||
void SpellDummy_Impl::GetSpell_Impl()
|
||||
{
|
||||
- // update configuration before accessing the service
|
||||
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
|
||||
- SvxLinguConfigUpdate::UpdateAll();
|
||||
-
|
||||
if (!xSpell.is())
|
||||
{
|
||||
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
@@ -748,10 +376,6 @@
|
||||
|
||||
void HyphDummy_Impl::GetHyph_Impl()
|
||||
{
|
||||
- // update configuration before accessing the service
|
||||
- if (SvxLinguConfigUpdate::IsNeedUpdateAll())
|
||||
- SvxLinguConfigUpdate::UpdateAll();
|
||||
-
|
||||
if (!xHyph.is())
|
||||
{
|
||||
uno::Reference< XLinguServiceManager > xLngSvcMgr( GetLngSvcMgr_Impl() );
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/Library_lng.mk libreoffice-3.5.5.3/linguistic/Library_lng.mk
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/Library_lng.mk 2012-07-13 12:23:35.568866084 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/Library_lng.mk 2012-07-16 08:49:27.810226966 +0100
|
||||
@@ -56,6 +56,7 @@
|
||||
tl \
|
||||
ucbhelper \
|
||||
utl \
|
||||
+ vcl \
|
||||
xo \
|
||||
$(gb_STDLIBS) \
|
||||
))
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/prj/build.lst libreoffice-3.5.5.3/linguistic/prj/build.lst
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/prj/build.lst 2012-07-13 12:23:35.611866523 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/prj/build.lst 2012-07-16 08:49:27.820227082 +0100
|
||||
@@ -1,2 +1,2 @@
|
||||
-lg linguistic : svl xmloff ucbhelper comphelper ICU:icu LIBXSLT:libxslt NULL
|
||||
+lg linguistic : svl vcl xmloff ucbhelper comphelper ICU:icu LIBXSLT:libxslt NULL
|
||||
lg linguistic\prj nmake - all lg_prj NULL
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.cxx libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.cxx
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.cxx 2012-07-13 12:23:35.585866257 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.cxx 2012-07-16 08:49:27.829227184 +0100
|
||||
@@ -27,6 +27,7 @@
|
||||
************************************************************************/
|
||||
|
||||
|
||||
+#include <com/sun/star/deployment/ExtensionManager.hpp>
|
||||
#include <com/sun/star/registry/XRegistryKey.hpp>
|
||||
#include <com/sun/star/container/XContentEnumerationAccess.hpp>
|
||||
#include <com/sun/star/container/XEnumeration.hpp>
|
||||
@@ -270,8 +271,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
-//IMPL_LINK( LngSvcMgrListenerHelper, TimeOut, Timer*, pTimer )
|
||||
long LngSvcMgrListenerHelper::Timeout()
|
||||
{
|
||||
osl::MutexGuard aGuard( GetLinguMutex() );
|
||||
@@ -483,11 +482,98 @@
|
||||
pNames[2] = "ServiceManager/HyphenatorList";
|
||||
pNames[3] = "ServiceManager/ThesaurusList";
|
||||
EnableNotification( aNames );
|
||||
+
|
||||
+ UpdateAll();
|
||||
+
|
||||
+ aUpdateTimer.SetTimeout(500);
|
||||
+ aUpdateTimer.SetTimeoutHdl(LINK(this, LngSvcMgr, updateAndBroadcast));
|
||||
+
|
||||
+ // request to be notified if an extension has been added/removed
|
||||
+ uno::Reference<uno::XComponentContext> xContext(comphelper::getProcessComponentContext());
|
||||
+
|
||||
+ uno::Reference<deployment::XExtensionManager> xExtensionManager(
|
||||
+ deployment::ExtensionManager::get(xContext));
|
||||
+ if (xExtensionManager.is())
|
||||
+ {
|
||||
+ xMB = uno::Reference<util::XModifyBroadcaster>(xExtensionManager, uno::UNO_QUERY_THROW);
|
||||
+
|
||||
+ uno::Reference<util::XModifyListener> xListener(this);
|
||||
+ xMB->addModifyListener( xListener );
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+// ::com::sun::star::util::XModifyListener
|
||||
+void LngSvcMgr::modified(const lang::EventObject&)
|
||||
+ throw(uno::RuntimeException)
|
||||
+{
|
||||
+ osl::MutexGuard aGuard(GetLinguMutex());
|
||||
+ //assume that if an extension has been added/removed that
|
||||
+ //it might be a dictionary extension, so drop our cache
|
||||
+
|
||||
+ delete pAvailSpellSvcs;
|
||||
+ pAvailSpellSvcs = NULL;
|
||||
+ delete pAvailGrammarSvcs;
|
||||
+ pAvailGrammarSvcs = NULL;
|
||||
+ delete pAvailHyphSvcs;
|
||||
+ pAvailHyphSvcs = NULL;
|
||||
+ delete pAvailThesSvcs;
|
||||
+ pAvailThesSvcs = NULL;
|
||||
+
|
||||
+ //schedule in an update to execute in the main thread
|
||||
+ aUpdateTimer.Start();
|
||||
+}
|
||||
+
|
||||
+//run update, and inform everyone that dictionaries (may) have changed, this
|
||||
+//needs to be run in the main thread because
|
||||
+//utl::ConfigChangeListener_Impl::changesOccurred grabs the SolarMutex and we
|
||||
+//get notified that an extension was added from an extension manager thread
|
||||
+IMPL_LINK_NOARG(LngSvcMgr, updateAndBroadcast)
|
||||
+{
|
||||
+ osl::MutexGuard aGuard( GetLinguMutex() );
|
||||
+
|
||||
+ UpdateAll();
|
||||
+
|
||||
+ if (pListenerHelper)
|
||||
+ {
|
||||
+ pListenerHelper->AddLngSvcEvt(
|
||||
+ linguistic2::LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN |
|
||||
+ linguistic2::LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN |
|
||||
+ linguistic2::LinguServiceEventFlags::PROOFREAD_AGAIN |
|
||||
+ linguistic2::LinguServiceEventFlags::HYPHENATE_AGAIN );
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
+void LngSvcMgr::stopListening()
|
||||
+{
|
||||
+ osl::MutexGuard aGuard(GetLinguMutex());
|
||||
+
|
||||
+ if (xMB.is())
|
||||
+ {
|
||||
+ try
|
||||
+ {
|
||||
+ uno::Reference<util::XModifyListener> xListener(this);
|
||||
+ xMB->removeModifyListener(xListener);
|
||||
+ }
|
||||
+ catch (const uno::Exception&)
|
||||
+ {
|
||||
+ }
|
||||
+
|
||||
+ xMB.clear();
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LngSvcMgr::disposing(const lang::EventObject&)
|
||||
+ throw (uno::RuntimeException)
|
||||
+{
|
||||
+ stopListening();
|
||||
+}
|
||||
|
||||
LngSvcMgr::~LngSvcMgr()
|
||||
{
|
||||
+ stopListening();
|
||||
+
|
||||
// memory for pSpellDsp, pHyphDsp, pThesDsp, pListenerHelper
|
||||
// will be freed in the destructor of the respective Reference's
|
||||
// xSpellDsp, xGrammarDsp, xHyphDsp, xThesDsp
|
||||
@@ -498,6 +584,252 @@
|
||||
delete pAvailThesSvcs;
|
||||
}
|
||||
|
||||
+namespace
|
||||
+{
|
||||
+ using lang::Locale;
|
||||
+ using uno::Any;
|
||||
+ using uno::Sequence;
|
||||
+
|
||||
+ sal_Bool lcl_FindEntry( const OUString &rEntry, const Sequence< OUString > &rCfgSvcs )
|
||||
+ {
|
||||
+ sal_Int32 nRes = -1;
|
||||
+ sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
+ const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nEntries && nRes == -1; ++i)
|
||||
+ {
|
||||
+ if (rEntry == pEntry[i])
|
||||
+ nRes = i;
|
||||
+ }
|
||||
+ return nRes != -1;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_GetLastFoundSvcs(
|
||||
+ SvtLinguConfig &rCfg,
|
||||
+ const OUString &rLastFoundList ,
|
||||
+ const Locale &rAvailLocale )
|
||||
+ {
|
||||
+ Sequence< OUString > aRes;
|
||||
+
|
||||
+ OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
+ LocaleToLanguage( rAvailLocale ) ) );
|
||||
+
|
||||
+ Sequence< OUString > aNodeNames( rCfg.GetNodeNames(rLastFoundList) );
|
||||
+ sal_Bool bFound = lcl_FindEntry( aCfgLocaleStr, aNodeNames);
|
||||
+
|
||||
+ if (bFound)
|
||||
+ {
|
||||
+ Sequence< OUString > aNames(1);
|
||||
+ OUString &rNodeName = aNames.getArray()[0];
|
||||
+ rNodeName = rLastFoundList;
|
||||
+ rNodeName += OUString::valueOf( (sal_Unicode)'/' );
|
||||
+ rNodeName += aCfgLocaleStr;
|
||||
+ Sequence< Any > aValues( rCfg.GetProperties( aNames ) );
|
||||
+ if (aValues.getLength())
|
||||
+ {
|
||||
+ OSL_ENSURE( aValues.getLength() == 1, "unexpected length of sequence" );
|
||||
+ Sequence< OUString > aSvcImplNames;
|
||||
+ if (aValues.getConstArray()[0] >>= aSvcImplNames)
|
||||
+ aRes = aSvcImplNames;
|
||||
+ else
|
||||
+ {
|
||||
+ OSL_FAIL( "type mismatch" );
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return aRes;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_RemoveMissingEntries(
|
||||
+ const Sequence< OUString > &rCfgSvcs,
|
||||
+ const Sequence< OUString > &rAvailSvcs )
|
||||
+ {
|
||||
+ Sequence< OUString > aRes( rCfgSvcs.getLength() );
|
||||
+ OUString *pRes = aRes.getArray();
|
||||
+ sal_Int32 nCnt = 0;
|
||||
+
|
||||
+ sal_Int32 nEntries = rCfgSvcs.getLength();
|
||||
+ const OUString *pEntry = rCfgSvcs.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nEntries; ++i)
|
||||
+ {
|
||||
+ if (!pEntry[i].isEmpty() && lcl_FindEntry( pEntry[i], rAvailSvcs ))
|
||||
+ pRes[ nCnt++ ] = pEntry[i];
|
||||
+ }
|
||||
+
|
||||
+ aRes.realloc( nCnt );
|
||||
+ return aRes;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_GetNewEntries(
|
||||
+ const Sequence< OUString > &rLastFoundSvcs,
|
||||
+ const Sequence< OUString > &rAvailSvcs )
|
||||
+ {
|
||||
+ sal_Int32 nLen = rAvailSvcs.getLength();
|
||||
+ Sequence< OUString > aRes( nLen );
|
||||
+ OUString *pRes = aRes.getArray();
|
||||
+ sal_Int32 nCnt = 0;
|
||||
+
|
||||
+ const OUString *pEntry = rAvailSvcs.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
+ {
|
||||
+ if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], rLastFoundSvcs ))
|
||||
+ pRes[ nCnt++ ] = pEntry[i];
|
||||
+ }
|
||||
+
|
||||
+ aRes.realloc( nCnt );
|
||||
+ return aRes;
|
||||
+ }
|
||||
+
|
||||
+ Sequence< OUString > lcl_MergeSeq(
|
||||
+ const Sequence< OUString > &rCfgSvcs,
|
||||
+ const Sequence< OUString > &rNewSvcs )
|
||||
+ {
|
||||
+ Sequence< OUString > aRes( rCfgSvcs.getLength() + rNewSvcs.getLength() );
|
||||
+ OUString *pRes = aRes.getArray();
|
||||
+ sal_Int32 nCnt = 0;
|
||||
+
|
||||
+ for (sal_Int32 k = 0; k < 2; ++k)
|
||||
+ {
|
||||
+ // add previously configuerd service first and append
|
||||
+ // new found services at the end
|
||||
+ const Sequence< OUString > &rSeq = k == 0 ? rCfgSvcs : rNewSvcs;
|
||||
+
|
||||
+ sal_Int32 nLen = rSeq.getLength();
|
||||
+ const OUString *pEntry = rSeq.getConstArray();
|
||||
+ for (sal_Int32 i = 0; i < nLen; ++i)
|
||||
+ {
|
||||
+ if (!pEntry[i].isEmpty() && !lcl_FindEntry( pEntry[i], aRes ))
|
||||
+ pRes[ nCnt++ ] = pEntry[i];
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ aRes.realloc( nCnt );
|
||||
+ return aRes;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LngSvcMgr::UpdateAll()
|
||||
+{
|
||||
+ using beans::PropertyValue;
|
||||
+ using lang::Locale;
|
||||
+ using uno::Sequence;
|
||||
+
|
||||
+ typedef OUString OUstring_t;
|
||||
+ typedef Sequence< OUString > Sequence_OUString_t;
|
||||
+ typedef std::map< OUstring_t, Sequence_OUString_t > list_entry_map_t;
|
||||
+
|
||||
+ SvtLinguConfig aCfg;
|
||||
+
|
||||
+ const int nNumServices = 4;
|
||||
+ const sal_Char * apServices[nNumServices] = { SN_SPELLCHECKER, SN_GRAMMARCHECKER, SN_HYPHENATOR, SN_THESAURUS };
|
||||
+ const sal_Char * apCurLists[nNumServices] = { "ServiceManager/SpellCheckerList", "ServiceManager/GrammarCheckerList", "ServiceManager/HyphenatorList", "ServiceManager/ThesaurusList" };
|
||||
+ const sal_Char * apLastFoundLists[nNumServices] = { "ServiceManager/LastFoundSpellCheckers", "ServiceManager/LastFoundGrammarCheckers", "ServiceManager/LastFoundHyphenators", "ServiceManager/LastFoundThesauri" };
|
||||
+
|
||||
+ // usage of indices as above: 0 = spell checker, 1 = grammar checker, 2 = hyphenator, 3 = thesaurus
|
||||
+ std::vector< list_entry_map_t > aLastFoundSvcs(nNumServices);
|
||||
+ std::vector< list_entry_map_t > aCurSvcs(nNumServices);
|
||||
+
|
||||
+ for (int k = 0; k < nNumServices; ++k)
|
||||
+ {
|
||||
+ OUString aService( ::rtl::OUString::createFromAscii( apServices[k] ) );
|
||||
+ OUString aActiveList( ::rtl::OUString::createFromAscii( apCurLists[k] ) );
|
||||
+ OUString aLastFoundList( ::rtl::OUString::createFromAscii( apLastFoundLists[k] ) );
|
||||
+ sal_Int32 i;
|
||||
+
|
||||
+ //
|
||||
+ // remove configured but not available language/services entries
|
||||
+ //
|
||||
+ Sequence< OUString > aNodeNames( aCfg.GetNodeNames( aActiveList ) ); // list of configured locales
|
||||
+ sal_Int32 nNodeNames = aNodeNames.getLength();
|
||||
+ const OUString *pNodeName = aNodeNames.getConstArray();
|
||||
+ for (i = 0; i < nNodeNames; ++i)
|
||||
+ {
|
||||
+ Locale aLocale( CreateLocale( MsLangId::convertIsoStringToLanguage(pNodeName[i]) ) );
|
||||
+ Sequence< OUString > aCfgSvcs( getConfiguredServices( aService, aLocale ));
|
||||
+ Sequence< OUString > aAvailSvcs( getAvailableServices( aService, aLocale ));
|
||||
+
|
||||
+ aCfgSvcs = lcl_RemoveMissingEntries( aCfgSvcs, aAvailSvcs );
|
||||
+
|
||||
+ aCurSvcs[k][ pNodeName[i] ] = aCfgSvcs;
|
||||
+ }
|
||||
+
|
||||
+ //
|
||||
+ // add new available language/service entries
|
||||
+ // and
|
||||
+ // set last found services to currently available ones
|
||||
+ //
|
||||
+ Sequence< Locale > aAvailLocales( getAvailableLocales(aService) );
|
||||
+ sal_Int32 nAvailLocales = aAvailLocales.getLength();
|
||||
+ const Locale *pAvailLocale = aAvailLocales.getConstArray();
|
||||
+ for (i = 0; i < nAvailLocales; ++i)
|
||||
+ {
|
||||
+ OUString aCfgLocaleStr( MsLangId::convertLanguageToIsoString(
|
||||
+ LocaleToLanguage( pAvailLocale[i] ) ) );
|
||||
+
|
||||
+ Sequence< OUString > aAvailSvcs( getAvailableServices( aService, pAvailLocale[i] ));
|
||||
+
|
||||
+ aLastFoundSvcs[k][ aCfgLocaleStr ] = aAvailSvcs;
|
||||
+
|
||||
+ Sequence< OUString > aLastSvcs(
|
||||
+ lcl_GetLastFoundSvcs( aCfg, aLastFoundList , pAvailLocale[i] ));
|
||||
+ Sequence< OUString > aNewSvcs =
|
||||
+ lcl_GetNewEntries( aLastSvcs, aAvailSvcs );
|
||||
+
|
||||
+ Sequence< OUString > aCfgSvcs( aCurSvcs[k][ aCfgLocaleStr ] );
|
||||
+
|
||||
+ // merge services list (previously configured to be listed first).
|
||||
+ aCfgSvcs = lcl_MergeSeq( aCfgSvcs, aNewSvcs );
|
||||
+
|
||||
+ aCurSvcs[k][ aCfgLocaleStr ] = aCfgSvcs;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ //
|
||||
+ // write new data back to configuration
|
||||
+ //
|
||||
+ for (int k = 0; k < nNumServices; ++k)
|
||||
+ {
|
||||
+ for (int i = 0; i < 2; ++i)
|
||||
+ {
|
||||
+ const sal_Char *pSubNodeName = (i == 0) ? apCurLists[k] : apLastFoundLists[k];
|
||||
+ OUString aSubNodeName( ::rtl::OUString::createFromAscii(pSubNodeName) );
|
||||
+
|
||||
+ list_entry_map_t &rCurMap = (i == 0) ? aCurSvcs[k] : aLastFoundSvcs[k];
|
||||
+ list_entry_map_t::const_iterator aIt( rCurMap.begin() );
|
||||
+ sal_Int32 nVals = static_cast< sal_Int32 >( rCurMap.size() );
|
||||
+ Sequence< PropertyValue > aNewValues( nVals );
|
||||
+ PropertyValue *pNewValue = aNewValues.getArray();
|
||||
+ while (aIt != rCurMap.end())
|
||||
+ {
|
||||
+ OUString aCfgEntryName( aSubNodeName );
|
||||
+ aCfgEntryName += OUString::valueOf( (sal_Unicode) '/' );
|
||||
+ aCfgEntryName += (*aIt).first;
|
||||
+
|
||||
+ pNewValue->Name = aCfgEntryName;
|
||||
+ pNewValue->Value <<= (*aIt).second;
|
||||
+ ++pNewValue;
|
||||
+ ++aIt;
|
||||
+ }
|
||||
+ OSL_ENSURE( pNewValue - aNewValues.getArray() == nVals,
|
||||
+ "possible mismatch of sequence size and property number" );
|
||||
+
|
||||
+ {
|
||||
+ // add new or replace existing entries.
|
||||
+ sal_Bool bRes = aCfg.ReplaceSetProperties( aSubNodeName, aNewValues );
|
||||
+ if (!bRes)
|
||||
+ {
|
||||
+#if OSL_DEBUG_LEVEL > 1
|
||||
+ OSL_FAIL( "failed to set new configuration values" );
|
||||
+#endif
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ //The new settings in the configuration get applied ! because we are
|
||||
+ //listening to the configuration for changes of the relevant ! properties
|
||||
+ //and Notify applies the new settings.
|
||||
+}
|
||||
|
||||
void LngSvcMgr::Notify( const uno::Sequence< OUString > &rPropertyNames )
|
||||
{
|
||||
@@ -1263,32 +1595,21 @@
|
||||
|
||||
if (0 == rServiceName.compareToAscii( SN_SPELLCHECKER ))
|
||||
{
|
||||
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
|
||||
- // already found without the need to restart the office
|
||||
- delete pAvailSpellSvcs; pAvailSpellSvcs = 0;
|
||||
GetAvailableSpellSvcs_Impl();
|
||||
pInfoArray = pAvailSpellSvcs;
|
||||
}
|
||||
else if (0 == rServiceName.compareToAscii( SN_GRAMMARCHECKER ))
|
||||
{
|
||||
-// disable force re-loading of the cache - re-start needed for new grammer checkers: fdo#35270
|
||||
-// delete pAvailGrammarSvcs; pAvailGrammarSvcs = 0;
|
||||
GetAvailableGrammarSvcs_Impl();
|
||||
pInfoArray = pAvailGrammarSvcs;
|
||||
}
|
||||
else if (0 == rServiceName.compareToAscii( SN_HYPHENATOR ))
|
||||
{
|
||||
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
|
||||
- // already found without the need to restart the office
|
||||
- delete pAvailHyphSvcs; pAvailHyphSvcs = 0;
|
||||
GetAvailableHyphSvcs_Impl();
|
||||
pInfoArray = pAvailHyphSvcs;
|
||||
}
|
||||
else if (0 == rServiceName.compareToAscii( SN_THESAURUS ))
|
||||
{
|
||||
- // don't used cached data here (force re-evaluation in order to have downloaded dictionaries
|
||||
- // already found without the need to restart the office
|
||||
- delete pAvailThesSvcs; pAvailThesSvcs = 0;
|
||||
GetAvailableThesSvcs_Impl();
|
||||
pInfoArray = pAvailThesSvcs;
|
||||
}
|
||||
diff -ru libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.hxx libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.hxx
|
||||
--- libreoffice-3.5.5.3.orig/linguistic/source/lngsvcmgr.hxx 2012-07-13 12:23:35.598866391 +0100
|
||||
+++ libreoffice-3.5.5.3/linguistic/source/lngsvcmgr.hxx 2012-07-16 08:49:27.833227231 +0100
|
||||
@@ -30,7 +30,7 @@
|
||||
#define _LINGUISTIC_LNGSVCMGR_HXX_
|
||||
|
||||
#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
|
||||
-#include <cppuhelper/implbase4.hxx> // helper for implementations
|
||||
+#include <cppuhelper/implbase5.hxx> // helper for implementations
|
||||
#include <cppuhelper/interfacecontainer.h> //OMultiTypeInterfaceContainerHelper
|
||||
|
||||
|
||||
@@ -39,8 +39,10 @@
|
||||
#include <com/sun/star/lang/XComponent.hpp>
|
||||
#include <com/sun/star/linguistic2/XLinguServiceManager.hpp>
|
||||
#include <com/sun/star/linguistic2/XAvailableLocales.hpp>
|
||||
+#include <com/sun/star/util/XModifyBroadcaster.hpp>
|
||||
+#include <com/sun/star/util/XModifyListener.hpp>
|
||||
#include <unotools/configitem.hxx>
|
||||
-
|
||||
+#include <vcl/timer.hxx>
|
||||
#include <boost/ptr_container/ptr_vector.hpp>
|
||||
|
||||
#include "linguistic/misc.hxx"
|
||||
@@ -65,12 +67,13 @@
|
||||
|
||||
|
||||
class LngSvcMgr :
|
||||
- public cppu::WeakImplHelper4
|
||||
+ public cppu::WeakImplHelper5
|
||||
<
|
||||
com::sun::star::linguistic2::XLinguServiceManager,
|
||||
com::sun::star::linguistic2::XAvailableLocales,
|
||||
com::sun::star::lang::XComponent,
|
||||
- com::sun::star::lang::XServiceInfo
|
||||
+ com::sun::star::lang::XServiceInfo,
|
||||
+ com::sun::star::util::XModifyListener
|
||||
>,
|
||||
private utl::ConfigItem
|
||||
{
|
||||
@@ -90,6 +93,12 @@
|
||||
com::sun::star::uno::Reference<
|
||||
::com::sun::star::lang::XEventListener > xListenerHelper;
|
||||
|
||||
+ com::sun::star::uno::Reference<
|
||||
+ ::com::sun::star::util::XModifyBroadcaster> xMB;
|
||||
+
|
||||
+ Timer aUpdateTimer;
|
||||
+
|
||||
+
|
||||
com::sun::star::uno::Sequence<
|
||||
com::sun::star::lang::Locale > aAvailSpellLocales;
|
||||
com::sun::star::uno::Sequence<
|
||||
@@ -140,6 +149,10 @@
|
||||
virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString > &rPropertyNames );
|
||||
virtual void Commit();
|
||||
|
||||
+ void UpdateAll();
|
||||
+ void stopListening();
|
||||
+ DECL_LINK( updateAndBroadcast, void* );
|
||||
+
|
||||
public:
|
||||
LngSvcMgr();
|
||||
virtual ~LngSvcMgr();
|
||||
@@ -167,6 +180,11 @@
|
||||
virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
+ // XEventListener
|
||||
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& rSource ) throw(::com::sun::star::uno::RuntimeException);
|
||||
+
|
||||
+ // XModifyListener
|
||||
+ virtual void SAL_CALL modified( const ::com::sun::star::lang::EventObject& rEvent ) throw(::com::sun::star::uno::RuntimeException);
|
||||
|
||||
static inline ::rtl::OUString getImplementationName_Static();
|
||||
static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static() throw();
|
@ -1,37 +0,0 @@
|
||||
From 4fc8af89257436b9cad70de574a166aa11ec42f1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Mon, 9 Jul 2012 12:51:16 +0100
|
||||
Subject: [PATCH] Resolves: rhbz#838368 --view ignored while -view accepted
|
||||
|
||||
and our ooviewdoc script uses --view
|
||||
|
||||
Change-Id: Ice708f1c72c8d29d411ba21e93cb19876af13881
|
||||
---
|
||||
desktop/source/app/cmdlineargs.cxx | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/desktop/source/app/cmdlineargs.cxx b/desktop/source/app/cmdlineargs.cxx
|
||||
index af7ee26..c67db8c 100644
|
||||
--- a/desktop/source/app/cmdlineargs.cxx
|
||||
+++ b/desktop/source/app/cmdlineargs.cxx
|
||||
@@ -217,7 +217,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
|
||||
bStartEvent = false;
|
||||
bDisplaySpec = false;
|
||||
}
|
||||
- else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-view" )))
|
||||
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "view" )))
|
||||
{
|
||||
// open in viewmode
|
||||
bOpenEvent = false;
|
||||
@@ -229,7 +229,7 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
|
||||
bStartEvent = false;
|
||||
bDisplaySpec = false;
|
||||
}
|
||||
- else if ( aArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "-show" )))
|
||||
+ else if ( oArg.equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM( "show" )))
|
||||
{
|
||||
// open in viewmode
|
||||
bOpenEvent = false;
|
||||
--
|
||||
1.7.10.4
|
||||
|
@ -1,144 +0,0 @@
|
||||
From c29af1572ad15ac5199a09e5812fb8354c165329 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Wed, 22 Aug 2012 14:20:32 +0100
|
||||
Subject: [PATCH] Resolves: rhbz#842292 crash in calling callback whose
|
||||
instance was deleted
|
||||
|
||||
Change-Id: I4cc04d59f48b42cc105703daa9983dd7c9f7af62
|
||||
---
|
||||
.../controller/SlsDragAndDropContext.cxx | 6 +++--
|
||||
.../slidesorter/controller/SlsScrollBarManager.cxx | 8 ++++---
|
||||
.../controller/SlsSelectionFunction.cxx | 26 ++++++++++++++++++----
|
||||
.../inc/controller/SlsScrollBarManager.hxx | 2 ++
|
||||
4 files changed, 33 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx b/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
|
||||
index b8234b5..c1bf497 100644
|
||||
--- a/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
|
||||
+++ b/sd/source/ui/slidesorter/controller/SlsDragAndDropContext.cxx
|
||||
@@ -100,11 +100,13 @@ void DragAndDropContext::UpdatePosition (
|
||||
::boost::shared_ptr<InsertionIndicatorHandler> pInsertionIndicatorHandler (
|
||||
mpTargetSlideSorter->GetController().GetInsertionIndicatorHandler());
|
||||
|
||||
- if ( ! (bAllowAutoScroll
|
||||
+ bool bDoAutoScroll = bAllowAutoScroll
|
||||
&& mpTargetSlideSorter->GetController().GetScrollBarManager().AutoScroll(
|
||||
rMousePosition,
|
||||
::boost::bind(
|
||||
- &DragAndDropContext::UpdatePosition, this, rMousePosition, eMode, false))))
|
||||
+ &DragAndDropContext::UpdatePosition, this, rMousePosition, eMode, false));
|
||||
+
|
||||
+ if (!bDoAutoScroll)
|
||||
{
|
||||
pInsertionIndicatorHandler->UpdatePosition(aMouseModelPosition, eMode);
|
||||
|
||||
diff --git a/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx b/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx
|
||||
index a45f640..4a2d808 100644
|
||||
--- a/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx
|
||||
+++ b/sd/source/ui/slidesorter/controller/SlsScrollBarManager.cxx
|
||||
@@ -617,13 +617,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
- maAutoScrollFunctor = ::boost::function<void(void)>();
|
||||
+ clearAutoScrollFunctor();
|
||||
mbIsAutoScrollActive = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
-
|
||||
-
|
||||
+void ScrollBarManager::clearAutoScrollFunctor()
|
||||
+{
|
||||
+ maAutoScrollFunctor = ::boost::function<void(void)>();
|
||||
+}
|
||||
|
||||
IMPL_LINK_NOARG(ScrollBarManager, AutoScrollTimeoutHandler)
|
||||
{
|
||||
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
|
||||
index 6217c07..16c23ad 100644
|
||||
--- a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
|
||||
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
|
||||
@@ -273,6 +273,7 @@ private:
|
||||
SelectionMode meSelectionMode;
|
||||
Point maSecondCorner;
|
||||
Pointer maSavedPointer;
|
||||
+ bool mbAutoScrollInstalled;
|
||||
sal_Int32 mnAnchorIndex;
|
||||
sal_Int32 mnSecondIndex;
|
||||
view::ButtonBar::Lock maButtonBarLock;
|
||||
@@ -1503,6 +1504,7 @@ MultiSelectionModeHandler::MultiSelectionModeHandler (
|
||||
meSelectionMode(SM_Normal),
|
||||
maSecondCorner(rMouseModelPosition),
|
||||
maSavedPointer(mrSlideSorter.GetContentWindow()->GetPointer()),
|
||||
+ mbAutoScrollInstalled(false),
|
||||
mnAnchorIndex(-1),
|
||||
mnSecondIndex(-1),
|
||||
maButtonBarLock(rSlideSorter)
|
||||
@@ -1523,6 +1525,12 @@ void MultiSelectionModeHandler::Initialize(const sal_uInt32 nEventCode)
|
||||
|
||||
MultiSelectionModeHandler::~MultiSelectionModeHandler (void)
|
||||
{
|
||||
+ if (mbAutoScrollInstalled)
|
||||
+ {
|
||||
+ //a call to this handler's MultiSelectionModeHandler::UpdatePosition
|
||||
+ //may be still waiting to be called back
|
||||
+ mrSlideSorter.GetController().GetScrollBarManager().clearAutoScrollFunctor();
|
||||
+ }
|
||||
mrSlideSorter.GetContentWindow()->SetPointer(maSavedPointer);
|
||||
}
|
||||
|
||||
@@ -1564,6 +1572,14 @@ void MultiSelectionModeHandler::ProcessEvent (
|
||||
bool MultiSelectionModeHandler::ProcessButtonUpEvent (
|
||||
SelectionFunction::EventDescriptor& rDescriptor)
|
||||
{
|
||||
+ if (mbAutoScrollInstalled)
|
||||
+ {
|
||||
+ //a call to this handler's MultiSelectionModeHandler::UpdatePosition
|
||||
+ //may be still waiting to be called back
|
||||
+ mrSlideSorter.GetController().GetScrollBarManager().clearAutoScrollFunctor();
|
||||
+ mbAutoScrollInstalled = false;
|
||||
+ }
|
||||
+
|
||||
if (Match(rDescriptor.mnEventCode, BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK))
|
||||
{
|
||||
mrSelectionFunction.SwitchToNormalMode();
|
||||
@@ -1620,16 +1636,18 @@ void MultiSelectionModeHandler::UpdatePosition (
|
||||
SharedSdWindow pWindow (mrSlideSorter.GetContentWindow());
|
||||
const Point aMouseModelPosition (pWindow->PixelToLogic(rMousePosition));
|
||||
|
||||
- if ( ! (bAllowAutoScroll && mrSlideSorter.GetController().GetScrollBarManager().AutoScroll(
|
||||
+ bool bDoAutoScroll = bAllowAutoScroll && mrSlideSorter.GetController().GetScrollBarManager().AutoScroll(
|
||||
rMousePosition,
|
||||
::boost::bind(
|
||||
&MultiSelectionModeHandler::UpdatePosition,
|
||||
this,
|
||||
rMousePosition,
|
||||
- false))))
|
||||
- {
|
||||
+ false));
|
||||
+
|
||||
+ if (!bDoAutoScroll)
|
||||
UpdateModelPosition(aMouseModelPosition);
|
||||
- }
|
||||
+
|
||||
+ mbAutoScrollInstalled |= bDoAutoScroll;
|
||||
}
|
||||
|
||||
|
||||
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx
|
||||
index 18807c1..41f3bde 100644
|
||||
--- a/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx
|
||||
+++ b/sd/source/ui/slidesorter/inc/controller/SlsScrollBarManager.hxx
|
||||
@@ -172,6 +172,8 @@ public:
|
||||
|
||||
void StopAutoScroll (void);
|
||||
|
||||
+ void clearAutoScrollFunctor();
|
||||
+
|
||||
enum Orientation { Orientation_Horizontal, Orientation_Vertical };
|
||||
enum Unit { Unit_Pixel, Unit_Slide };
|
||||
/** Scroll the slide sorter by setting the thumbs of the scroll bars and
|
||||
--
|
||||
1.7.11.2
|
||||
|
@ -1,66 +0,0 @@
|
||||
From e99813f9372d24d3d2d734573c582d3e257cb5cc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Wed, 22 Aug 2012 11:46:50 +0100
|
||||
Subject: [PATCH] Resolves: rhbz#846775 Clipboard must be disposed before
|
||||
Selection
|
||||
|
||||
Change-Id: I968bc6da85cd444d504b08f85300a1fe251cdeee
|
||||
---
|
||||
sd/source/ui/slidesorter/controller/SlideSorterController.cxx | 5 +++--
|
||||
sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx | 2 +-
|
||||
2 files changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
|
||||
index 10ca623..ae9a6e9 100644
|
||||
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
|
||||
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
|
||||
@@ -110,10 +110,10 @@ SlideSorterController::SlideSorterController (SlideSorter& rSlideSorter)
|
||||
mpPageSelector(),
|
||||
mpFocusManager(),
|
||||
mpSlotManager(),
|
||||
- mpClipboard(),
|
||||
mpScrollBarManager(),
|
||||
mpCurrentSlideManager(),
|
||||
mpSelectionManager(),
|
||||
+ mpClipboard(),
|
||||
mpInsertionIndicatorHandler(new InsertionIndicatorHandler(rSlideSorter)),
|
||||
mpAnimator(new Animator(rSlideSorter)),
|
||||
mpVisibleAreaManager(new VisibleAreaManager(rSlideSorter)),
|
||||
@@ -156,9 +156,9 @@ void SlideSorterController::Init (void)
|
||||
mpPageSelector.reset(new PageSelector(mrSlideSorter));
|
||||
mpFocusManager.reset(new FocusManager(mrSlideSorter));
|
||||
mpSlotManager.reset(new SlotManager(mrSlideSorter));
|
||||
- mpClipboard.reset(new Clipboard(mrSlideSorter));
|
||||
mpScrollBarManager.reset(new ScrollBarManager(mrSlideSorter));
|
||||
mpSelectionManager.reset(new SelectionManager(mrSlideSorter));
|
||||
+ mpClipboard.reset(new Clipboard(mrSlideSorter));
|
||||
|
||||
mpScrollBarManager->LateInitialization();
|
||||
|
||||
@@ -202,6 +202,7 @@ SlideSorterController::~SlideSorterController (void)
|
||||
void SlideSorterController::Dispose (void)
|
||||
{
|
||||
mpInsertionIndicatorHandler->End(Animator::AM_Immediate);
|
||||
+ mpClipboard.reset();
|
||||
mpSelectionManager.reset();
|
||||
mpAnimator->Dispose();
|
||||
}
|
||||
diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
|
||||
index f456cb4..bf3d844 100644
|
||||
--- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
|
||||
+++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
|
||||
@@ -243,10 +243,10 @@ private:
|
||||
::boost::scoped_ptr<PageSelector> mpPageSelector;
|
||||
::boost::scoped_ptr<FocusManager> mpFocusManager;
|
||||
::boost::shared_ptr<SlotManager> mpSlotManager;
|
||||
- ::boost::scoped_ptr<controller::Clipboard> mpClipboard;
|
||||
::boost::scoped_ptr<ScrollBarManager> mpScrollBarManager;
|
||||
mutable ::boost::shared_ptr<CurrentSlideManager> mpCurrentSlideManager;
|
||||
::boost::shared_ptr<SelectionManager> mpSelectionManager;
|
||||
+ ::boost::scoped_ptr<controller::Clipboard> mpClipboard;
|
||||
::boost::shared_ptr<InsertionIndicatorHandler> mpInsertionIndicatorHandler;
|
||||
::boost::shared_ptr<Animator> mpAnimator;
|
||||
::boost::scoped_ptr<VisibleAreaManager> mpVisibleAreaManager;
|
||||
--
|
||||
1.7.11.2
|
||||
|
@ -1,74 +0,0 @@
|
||||
From b0759366fc6cdda2db2f2cb4208df36c1b1fe8fc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Wed, 12 Sep 2012 13:44:09 +0100
|
||||
Subject: [PATCH] Resolves: rhbz#855541 XIOError handler multithread woes
|
||||
|
||||
We have two threads using X, on an XIOError both
|
||||
threads call their XIOError handlers and two
|
||||
calls to exit trample all over eachother.
|
||||
|
||||
Change-Id: I20defc6f84cc6ea2372a0d6c979e8078fe920a88
|
||||
---
|
||||
vcl/unx/generic/app/saldata.cxx | 6 ++++++
|
||||
vcl/unx/gtk/app/gtkdata.cxx | 14 ++++++++++++++
|
||||
2 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/vcl/unx/generic/app/saldata.cxx b/vcl/unx/generic/app/saldata.cxx
|
||||
index 1fb6a7a..0596dce 100644
|
||||
--- a/vcl/unx/generic/app/saldata.cxx
|
||||
+++ b/vcl/unx/generic/app/saldata.cxx
|
||||
@@ -322,6 +322,12 @@ int X11SalData::XErrorHdl( Display *pDisplay, XErrorEvent *pEvent )
|
||||
|
||||
int X11SalData::XIOErrorHdl( Display * )
|
||||
{
|
||||
+ if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier())
|
||||
+ {
|
||||
+ pthread_exit(NULL);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
/* #106197# hack: until a real shutdown procedure exists
|
||||
* _exit ASAP
|
||||
*/
|
||||
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
|
||||
index 8f3151c..867883f 100644
|
||||
--- a/vcl/unx/gtk/app/gtkdata.cxx
|
||||
+++ b/vcl/unx/gtk/app/gtkdata.cxx
|
||||
@@ -526,6 +526,18 @@ GtkData::GtkData( SalInstance *pInstance )
|
||||
m_aDispatchCondition = osl_createCondition();
|
||||
}
|
||||
|
||||
+XIOErrorHandler aOrigXIOErrorHandler = NULL;
|
||||
+
|
||||
+int XIOErrorHdl(Display *pDisplay)
|
||||
+{
|
||||
+ if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier())
|
||||
+ {
|
||||
+ pthread_exit(NULL);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return aOrigXIOErrorHandler ? aOrigXIOErrorHandler(pDisplay) : 0;
|
||||
+}
|
||||
+
|
||||
GtkData::~GtkData()
|
||||
{
|
||||
Yield( true, true );
|
||||
@@ -545,6 +557,7 @@ GtkData::~GtkData()
|
||||
osl_destroyCondition( m_aDispatchCondition );
|
||||
osl_releaseMutex( m_aDispatchMutex );
|
||||
osl_destroyMutex( m_aDispatchMutex );
|
||||
+ XSetIOErrorHandler(aOrigXIOErrorHandler);
|
||||
}
|
||||
|
||||
void GtkData::Dispose()
|
||||
@@ -664,6 +677,7 @@ void GtkData::Init()
|
||||
// init gtk/gdk
|
||||
gtk_init_check( &nParams, &pCmdLineAry );
|
||||
gdk_error_trap_push();
|
||||
+ aOrigXIOErrorHandler = XSetIOErrorHandler(XIOErrorHdl);
|
||||
|
||||
for (i = 0; i < nParams; i++ )
|
||||
g_free( pCmdLineAry[i] );
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,214 +0,0 @@
|
||||
From db698b1878a38c732e73bf0e5ab06368b1a5f29a Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Wed, 19 Sep 2012 12:54:24 +0200
|
||||
Subject: [PATCH 1/4] convert java XSL transformer into extension
|
||||
|
||||
Change-Id: Ided6c480969764073056830722c8996e0df52285
|
||||
(cherry picked from commit 25113cd050d931b0e195fda6d6da9864a575070e)
|
||||
---
|
||||
filter/Extension_xslt2_transformer.mk | 18 +++++++++++++++++
|
||||
filter/Module_filter.mk | 1 +
|
||||
filter/source/xsltfilter/components.rdb | 8 ++++++++
|
||||
filter/source/xsltfilter/description-en-US.txt | 1 +
|
||||
filter/source/xsltfilter/description.xml | 28 ++++++++++++++++++++++++++
|
||||
filter/source/xsltfilter/manifest.xml | 6 ++++++
|
||||
postprocess/packcomponents/makefile.mk | 1 -
|
||||
scp2/InstallModule_ooo.mk | 3 ---
|
||||
scp2/source/ooo/common_brand.scp | 3 ---
|
||||
scp2/source/ooo/file_library_ooo.scp | 1 -
|
||||
scp2/source/ooo/file_ooo.scp | 6 ------
|
||||
scp2/source/ooo/module_hidden_ooo.scp | 1 -
|
||||
12 files changed, 62 insertions(+), 15 deletions(-)
|
||||
create mode 100644 filter/Extension_xslt2_transformer.mk
|
||||
create mode 100644 filter/source/xsltfilter/components.rdb
|
||||
create mode 100644 filter/source/xsltfilter/description-en-US.txt
|
||||
create mode 100644 filter/source/xsltfilter/description.xml
|
||||
create mode 100644 filter/source/xsltfilter/manifest.xml
|
||||
|
||||
diff --git a/filter/Extension_xslt2_transformer.mk b/filter/Extension_xslt2_transformer.mk
|
||||
new file mode 100644
|
||||
index 0000000..ab239d8
|
||||
--- /dev/null
|
||||
+++ b/filter/Extension_xslt2_transformer.mk
|
||||
@@ -0,0 +1,18 @@
|
||||
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
+#
|
||||
+# This file is part of the LibreOffice project.
|
||||
+#
|
||||
+# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
+# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
+#
|
||||
+
|
||||
+$(eval $(call gb_Extension_Extension,xslt2-transformer,filter/source/xsltfilter))
|
||||
+
|
||||
+$(eval $(call gb_Extension_add_files,xslt2-transformer,,\
|
||||
+ $(call gb_Jar_get_outdir_target,saxon9) \
|
||||
+ $(call gb_Jar_get_outdir_target,XSLTFilter) \
|
||||
+ $(SRCDIR)/filter/source/xsltfilter/components.rdb \
|
||||
+))
|
||||
+
|
||||
+# vim: set noet sw=4 ts=4:
|
||||
diff --git a/filter/Module_filter.mk b/filter/Module_filter.mk
|
||||
index 922d4f5..9c18157 100644
|
||||
--- a/filter/Module_filter.mk
|
||||
+++ b/filter/Module_filter.mk
|
||||
@@ -72,6 +72,7 @@ $(eval $(call gb_Module_add_targets,filter,\
|
||||
|
||||
ifneq ($(SOLAR_JAVA),)
|
||||
$(eval $(call gb_Module_add_targets,filter,\
|
||||
+ Extension_xslt2_transformer \
|
||||
Jar_XSLTFilter \
|
||||
Jar_XSLTValidate \
|
||||
))
|
||||
diff --git a/filter/source/xsltfilter/components.rdb b/filter/source/xsltfilter/components.rdb
|
||||
new file mode 100644
|
||||
index 0000000..080cb7a
|
||||
--- /dev/null
|
||||
+++ b/filter/source/xsltfilter/components.rdb
|
||||
@@ -0,0 +1,8 @@
|
||||
+<?xml version="1.0"?>
|
||||
+<components xmlns="http://openoffice.org/2010/uno-components">
|
||||
+ <component loader="com.sun.star.loader.Java2" uri="./XSLTFilter.jar">
|
||||
+ <implementation name="XSLTransformer">
|
||||
+ <service name="com.sun.star.comp.JAXTHelper"/>
|
||||
+ </implementation>
|
||||
+ </component>
|
||||
+</components>
|
||||
diff --git a/filter/source/xsltfilter/description-en-US.txt b/filter/source/xsltfilter/description-en-US.txt
|
||||
new file mode 100644
|
||||
index 0000000..88c8abf
|
||||
--- /dev/null
|
||||
+++ b/filter/source/xsltfilter/description-en-US.txt
|
||||
@@ -0,0 +1 @@
|
||||
+The xslt2-transformer implements a transformer for XSLT import/export filters with support for XSLT 2.0.
|
||||
diff --git a/filter/source/xsltfilter/description.xml b/filter/source/xsltfilter/description.xml
|
||||
new file mode 100644
|
||||
index 0000000..ae6abcb
|
||||
--- /dev/null
|
||||
+++ b/filter/source/xsltfilter/description.xml
|
||||
@@ -0,0 +1,28 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<description
|
||||
+
|
||||
+ xmlns="http://openoffice.org/extensions/description/2006"
|
||||
+ xmlns:dep="http://libreoffice.org/extensions/description/2011"
|
||||
+ xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
+
|
||||
+ <identifier value="org.libreoffice.JavaXSLT2Transformer"/>
|
||||
+
|
||||
+ <dependencies>
|
||||
+ <dep:LibreOffice-minimal-version value="3.7"/>
|
||||
+ </dependencies>
|
||||
+
|
||||
+ <version value="1.0.0"/>
|
||||
+
|
||||
+ <publisher>
|
||||
+ <name xlink:href="http://www.documentfoundation.org" lang="en-US">The Document Foundation</name>
|
||||
+ </publisher>
|
||||
+
|
||||
+ <display-name>
|
||||
+ <name lang="en-US">XSLT 2.0 transformer</name>
|
||||
+ </display-name>
|
||||
+
|
||||
+ <extension-description>
|
||||
+ <src xlink:href="description-en-US.txt" lang="en-US" />
|
||||
+ </extension-description>
|
||||
+
|
||||
+</description>
|
||||
diff --git a/filter/source/xsltfilter/manifest.xml b/filter/source/xsltfilter/manifest.xml
|
||||
new file mode 100644
|
||||
index 0000000..a443e65
|
||||
--- /dev/null
|
||||
+++ b/filter/source/xsltfilter/manifest.xml
|
||||
@@ -0,0 +1,6 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
|
||||
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
|
||||
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-components"
|
||||
+ manifest:full-path="components.rdb"/>
|
||||
+</manifest:manifest>
|
||||
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
|
||||
index 09e296b..ccb87f0 100644
|
||||
--- a/postprocess/packcomponents/makefile.mk
|
||||
+++ b/postprocess/packcomponents/makefile.mk
|
||||
@@ -288,7 +288,6 @@ my_components += component/framework/util/lomenubar
|
||||
.IF "$(SOLAR_JAVA)" == "TRUE"
|
||||
my_components += \
|
||||
component/xmerge/source/bridge/XMergeBridge \
|
||||
- component/filter/source/xsltfilter/XSLTFilter.jar \
|
||||
component/filter/source/xsltvalidate/XSLTValidate \
|
||||
component/scripting/java/ScriptFramework \
|
||||
component/scripting/java/ScriptProviderForJava \
|
||||
diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk
|
||||
index 0c49414..640ea3a 100644
|
||||
--- a/scp2/InstallModule_ooo.mk
|
||||
+++ b/scp2/InstallModule_ooo.mk
|
||||
@@ -158,9 +158,6 @@ $(eval $(call gb_InstallModule_add_defs,scp2/ooo,\
|
||||
$(if $(filter YES,$(SYSTEM_HSQLDB)),\
|
||||
-DHSQLDB_JAR=\""$(call gb_Helper_make_path,$(HSQLDB_JAR))"\" \
|
||||
) \
|
||||
- $(if $(filter YES,$(SYSTEM_SAXON)),\
|
||||
- -DSAXON_JAR=\""$(call gb_Helper_make_path,$(SAXON_JAR))"\" \
|
||||
- ) \
|
||||
$(if $(filter-out YES,$(WITH_MOZILLA)),\
|
||||
-DWITHOUT_MOZILLA \
|
||||
) \
|
||||
diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp
|
||||
index 997a142..83c5c21 100644
|
||||
--- a/scp2/source/ooo/common_brand.scp
|
||||
+++ b/scp2/source/ooo/common_brand.scp
|
||||
@@ -1259,9 +1259,6 @@ ProfileItem gid_Brand_Profileitem_Fundamental_Ure_Java_Classpath_Urls
|
||||
#ifdef SYSTEM_HSQLDB
|
||||
ValueList1 = HSQLDB_JAR;
|
||||
#endif
|
||||
-#ifdef SYSTEM_SAXON
|
||||
- ValueList2 = SAXON_JAR;
|
||||
-#endif
|
||||
End
|
||||
|
||||
ProfileItem gid_Brand_Profileitem_Fundamental_Ure_Bin_Dir
|
||||
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
|
||||
index 66c50e2..f3448e5 100644
|
||||
--- a/scp2/source/ooo/file_library_ooo.scp
|
||||
+++ b/scp2/source/ooo/file_library_ooo.scp
|
||||
@@ -1382,7 +1382,6 @@ STD_LIB_FILE( gid_File_Lib_Textfd, textfd )
|
||||
STD_LIB_FILE( gid_File_Lib_Odfflatxml, odfflatxml )
|
||||
|
||||
#ifdef SOLAR_JAVA
|
||||
-STD_JAR_FILE( gid_File_Jar_Xsltfilter, XSLTFilter )
|
||||
STD_JAR_FILE( gid_File_Jar_Xsltvalidate, XSLTValidate )
|
||||
#endif
|
||||
|
||||
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
|
||||
index ebdcf25..e274fc3 100644
|
||||
--- a/scp2/source/ooo/file_ooo.scp
|
||||
+++ b/scp2/source/ooo/file_ooo.scp
|
||||
@@ -469,12 +469,6 @@ End
|
||||
|
||||
#endif
|
||||
|
||||
-#ifdef SOLAR_JAVA
|
||||
-#ifndef SYSTEM_SAXON
|
||||
-STD_JAR_FILE( gid_File_Jar_Saxon, saxon9 )
|
||||
-#endif
|
||||
-#endif
|
||||
-
|
||||
#ifndef AIX
|
||||
#ifndef DISABLE_PYUNO
|
||||
|
||||
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
|
||||
index 76e062b..e00a38b 100644
|
||||
--- a/scp2/source/ooo/module_hidden_ooo.scp
|
||||
+++ b/scp2/source/ooo/module_hidden_ooo.scp
|
||||
@@ -129,7 +129,6 @@ Module gid_Module_Root_Files_3
|
||||
Default = YES;
|
||||
Styles = (HIDDEN_ROOT);
|
||||
Files = (gid_File_Dat_Root3,
|
||||
- gid_File_Jar_Saxon,
|
||||
gid_File_Jar_Unoil,
|
||||
gid_File_Jar_Hsqldb,
|
||||
gid_File_Jar_Hsqldb_Sdbc,
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 5155612a6e3a63d5b29fa3da522c2544dc6c8453 Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Fri, 2 Nov 2012 10:06:46 +0100
|
||||
Subject: [PATCH] do not strip install set
|
||||
|
||||
Change-Id: I68fb75cc35b96ecd8e4a56ef3d5304741f8a443a
|
||||
---
|
||||
instsetoo_native/util/makefile.mk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/instsetoo_native/util/makefile.mk b/instsetoo_native/util/makefile.mk
|
||||
index 7906d74..54e399d 100644
|
||||
--- a/instsetoo_native/util/makefile.mk
|
||||
+++ b/instsetoo_native/util/makefile.mk
|
||||
@@ -244,7 +244,7 @@ $(MAKETARGETS){$(PKGFORMAT:^".")} : $(ADDDEPS)
|
||||
.ENDIF # "$(MAKETARGETS:e)"=="" && "$(MAKETARGETS:s/_//)"!="$(MAKETARGETS)"
|
||||
.ENDIF # "$(MAKETARGETS)"!=""
|
||||
openoffice_%{$(PKGFORMAT:^".") .archive} :
|
||||
- $(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIOFFICETEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -strip -format $(@:e:s/.//) $(VERBOSESWITCH)
|
||||
+ $(PERL) -w $(SOLARENV)$/bin$/make_installer.pl -f $(PRJ)$/util$/openoffice.lst -l $(subst,$(@:s/_/ /:1)_, $(@:b)) -p LibreOffice -u $(OUT) -buildid $(BUILD) -msitemplate $(MSIOFFICETEMPLATEDIR) -msilanguage $(COMMONMISC)$/win_ulffiles -format $(@:e:s/.//) $(VERBOSESWITCH)
|
||||
$(PERL) -w $(SOLARENV)$/bin$/gen_update_info.pl --buildid $(BUILD) --arch "$(RTL_ARCH)" --os "$(RTL_OS)" --lstfile $(PRJ)$/util$/openoffice.lst --product LibreOffice --languages $(subst,$(@:s/_/ /:1)_, $(@:b)) $(PRJ)$/util$/update.xml > $(MISC)/`date +%Y%m%d_%H%M`_$(RTL_OS)_$(RTL_ARCH)$(@:e).update.xml
|
||||
|
||||
$(foreach,i,$(alllangiso) openofficedev_$i) : $$@{$(PKGFORMAT:^".")}
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,40 +0,0 @@
|
||||
From efd2dddb7b2e7fe2a91f0da9b5f282bf1ca9cabb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Fri, 9 Nov 2012 17:11:22 +0000
|
||||
Subject: [PATCH] fiddle system-db test to link on RHEL-6
|
||||
|
||||
Change-Id: Ic256a10dd45123ae45024f4e77edd3214bc4c931
|
||||
---
|
||||
configure.ac | 16 +++++++---------
|
||||
1 file changed, 7 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index c968dc2..307c467 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -7491,15 +7491,13 @@ if test "$with_system_db" = "yes"; then
|
||||
SYSTEM_DB_CFLAGS="-DSYSTEM_DB_HEADER='<$db_header>'"
|
||||
|
||||
DB_LIB=
|
||||
- dnl At least on OpenBSD dbver is not appended to the library
|
||||
- if test "$_os" = "OpenBSD"; then
|
||||
- dbver=''
|
||||
- fi
|
||||
- for dash in - ''; do
|
||||
- AC_CHECK_LIB(db$dash$dbver, dbopen,
|
||||
- [ DB_LIB="db$dash$dbver"; DB_CPPLIB="db_cxx$dash$dbver"; break ])
|
||||
- AC_CHECK_LIB(db$dash$dbver, __db185_open,
|
||||
- [ DB_LIB="db$dash$dbver"; DB_CPPLIB="db_cxx$dash$dbver"; break ])
|
||||
+ dnl At least on OpenBSD and RHEL-6 dbver is not appended to the library
|
||||
+ dnl even though the headers are in a versioned dir
|
||||
+ for suffix in '' '-$dbver' '$dbver' ''; do
|
||||
+ AC_CHECK_LIB(db$suffix, dbopen,
|
||||
+ [ DB_LIB="db$suffix"; DB_CPPLIB="db_cxx$suffix"; break ])
|
||||
+ AC_CHECK_LIB(db$suffix, __db185_open,
|
||||
+ [ DB_LIB="db$suffix"; DB_CPPLIB="db_cxx$suffix"; break ])
|
||||
done
|
||||
|
||||
if test -z "$DB_LIB"; then
|
||||
--
|
||||
1.7.11.7
|
||||
|
@ -1,208 +0,0 @@
|
||||
From f1c795baf1268c2650c706fc2aec28c2a7fbaf0e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Fri, 23 Nov 2012 09:42:39 +0000
|
||||
Subject: [PATCH] split qnametostr up to try and make .o's small enough for
|
||||
ppc64
|
||||
|
||||
i.e. relocation truncated to fix: R_PPC64_TOC16_DS
|
||||
|
||||
while I'm at it merge the standalone header/footer files into the .xslt and
|
||||
simplify the makefile.
|
||||
|
||||
Change-Id: Iee0e9b5dd96868f49f1bed22fb5dc6d28c8cef81
|
||||
---
|
||||
writerfilter/CustomTarget_source.mk | 16 +++----
|
||||
writerfilter/Library_writerfilter.mk | 21 ++-------
|
||||
writerfilter/source/doctok/qnametostr.xsl | 6 +++
|
||||
writerfilter/source/ooxml/qnametostr.xsl | 8 +++-
|
||||
.../source/resourcemodel/qnametostrcore.cxx | 52 ++++++++++++++++++++++
|
||||
writerfilter/source/resourcemodel/qnametostrfooter | 7 ---
|
||||
writerfilter/source/resourcemodel/qnametostrheader | 48 --------------------
|
||||
7 files changed, 74 insertions(+), 84 deletions(-)
|
||||
create mode 100644 writerfilter/source/resourcemodel/qnametostrcore.cxx
|
||||
delete mode 100644 writerfilter/source/resourcemodel/qnametostrfooter
|
||||
delete mode 100644 writerfilter/source/resourcemodel/qnametostrheader
|
||||
|
||||
diff --git a/writerfilter/CustomTarget_source.mk b/writerfilter/CustomTarget_source.mk
|
||||
index fc29784..5ee3041 100644
|
||||
--- a/writerfilter/CustomTarget_source.mk
|
||||
+++ b/writerfilter/CustomTarget_source.mk
|
||||
@@ -157,8 +157,8 @@
|
||||
|
||||
# resourcemodel
|
||||
|
||||
-wf_GEN_model_QNameToStr_cxx=$(writerfilter_WORK)/qnametostr.cxx
|
||||
-wf_GEN_ooxml_QNameToStr_tmp=$(writerfilter_WORK)/OOXMLqnameToStr.tmp
|
||||
+wf_GEN_ooxml_QNameToStr_cxx=$(writerfilter_WORK)/doctok/qnametostr.cxx
|
||||
+wf_GEN_ooxml_QNameToStr_cxx=$(writerfilter_WORK)/ooxml/qnametostr.cxx
|
||||
wf_GEN_model_SprmCodeToStr_cxx=$(writerfilter_WORK)/sprmcodetostr.cxx
|
||||
wf_GEN_model_SprmCodeToStr_tmp=$(writerfilter_WORK)/sprmcodetostr.tmp
|
||||
wf_GEN_doctok_QnameToStr_tmp=$(writerfilter_WORK)/DOCTOKqnameToStr.tmp
|
||||
@@ -170,18 +170,14 @@
|
||||
wf_DEP_ooxml_namespaces_txt=$(OUTDIR)/inc/oox/namespaces.txt
|
||||
wf_GEN_ooxml_preprocess_xsl=$(writerfilter_WORK)/modelpreprocess.xsl
|
||||
|
||||
-$(wf_GEN_ooxml_QNameToStr_tmp): $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed)
|
||||
+$(wf_GEN_ooxml_QNameToStr_cxx): $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed) $(wf_SRC_ooxml_FactoryTools_xsl)
|
||||
$(call gb_Output_announce,$@,build,XSL,1)
|
||||
$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_ooxml_QNameToStr_xsl) $(wf_GEN_ooxml_Model_processed)) > $@
|
||||
|
||||
-$(wf_GEN_doctok_QnameToStr_tmp): $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model) | $(writerfilter_WORK)/.dir
|
||||
+$(wf_GEN_doctok_QnameToStr_cxx): $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model) $(wf_SRC_doctok_ResourceTools_xsl) | $(writerfilter_WORK)/.dir
|
||||
$(call gb_Output_announce,$@,build,XSL,1)
|
||||
$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_doctok_QNameToStr_xsl) $(wf_SRC_doctok_Model)) > $@
|
||||
|
||||
-$(wf_GEN_model_QNameToStr_cxx): $(wf_GEN_ooxml_QNameToStr_tmp) $(wf_GEN_doctok_QnameToStr_tmp) $(writerfilter_SRC)/resourcemodel/qnametostrheader $(writerfilter_SRC)/resourcemodel/qnametostrfooter $(wf_SRC_ooxml_FactoryTools_xsl) $(wf_SRC_doctok_ResourceTools_xsl)
|
||||
- $(call gb_Output_announce,$@,build,CAT,1)
|
||||
- cat $(writerfilter_SRC)/resourcemodel/qnametostrheader $(wf_GEN_ooxml_QNameToStr_tmp) $(wf_GEN_doctok_QnameToStr_tmp) $(writerfilter_SRC)/resourcemodel/qnametostrfooter > $@
|
||||
-
|
||||
$(wf_GEN_model_SprmCodeToStr_tmp) : $(wf_SRC_doctok_SprmCodeToStr_xsl) $(wf_SRC_doctok_Model) | $(writerfilter_WORK)/.dir
|
||||
$(call gb_Output_announce,$@,build,XSL,1)
|
||||
$(call gb_Helper_abbreviate_dirs, $(gb_XSLTPROC) $(wf_SRC_doctok_SprmCodeToStr_xsl) $(wf_SRC_doctok_Model)) > $@
|
||||
@@ -218,7 +214,8 @@
|
||||
$(wf_GEN_ooxml_FastTokens_hxx) \
|
||||
$(wf_GEN_ooxml_GperfFastToken_hxx) \
|
||||
$(wf_GEN_ooxml_NamespaceIds_hxx) \
|
||||
- $(wf_GEN_model_QNameToStr_cxx) \
|
||||
+ $(wf_GEN_doctok_QNameToStr_cxx) \
|
||||
+ $(wf_GEN_ooxml_QNameToStr_cxx) \
|
||||
$(wf_GEN_model_SprmCodeToStr_cxx) \
|
||||
$(patsubst %,$(writerfilter_WORK)/OOXMLFactory_%.hxx,$(WRITERFILTER_OOXMLNAMESPACES)) \
|
||||
$(patsubst %,$(writerfilter_WORK)/OOXMLFactory_%.cxx,$(WRITERFILTER_OOXMLNAMESPACES)) \
|
||||
diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
|
||||
index 1d7c667..870732f 100644
|
||||
--- a/writerfilter/Library_writerfilter.mk
|
||||
+++ b/writerfilter/Library_writerfilter.mk
|
||||
@@ -170,6 +170,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
|
||||
writerfilter/source/resourcemodel/TagLogger \
|
||||
writerfilter/source/resourcemodel/WW8Analyzer \
|
||||
writerfilter/source/resourcemodel/XPathLogger \
|
||||
+ writerfilter/source/resourcemodel/qnametostrcore \
|
||||
writerfilter/source/resourcemodel/resourcemodel \
|
||||
writerfilter/source/resourcemodel/util \
|
||||
))
|
||||
@@ -180,24 +181,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,writerfilter,\
|
||||
CustomTarget/writerfilter/source/OOXMLFactory_generated \
|
||||
CustomTarget/writerfilter/source/OOXMLFactory_values \
|
||||
CustomTarget/writerfilter/source/sprmcodetostr \
|
||||
+ CustomTarget/writerfilter/source/doctok/qnametostr \
|
||||
+ CustomTarget/writerfilter/source/ooxml/qnametostr \
|
||||
))
|
||||
|
||||
-ifneq ($(COM)-$(OS)-$(CPUNAME),GCC-LINUX-POWERPC64)
|
||||
-#Apparently some compilers, according to the original .mk this was converted
|
||||
-#from, require this to be noopt or they fail to compile it, probably good to
|
||||
-#revisit that and narrow this down to where it's necessary
|
||||
-$(eval $(call gb_Library_add_generated_cxxobjects,writerfilter,\
|
||||
- CustomTarget/writerfilter/source/qnametostr \
|
||||
- , $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \
|
||||
-))
|
||||
-else
|
||||
-#Ironically, on RHEL-6 PPC64 with no-opt the output is too large for the
|
||||
-#toolchain, "Error: operand out of range", but it build fine with
|
||||
-#normal flags
|
||||
-$(eval $(call gb_Library_add_generated_cxxobjects,writerfilter,\
|
||||
- CustomTarget/writerfilter/source/qnametostr \
|
||||
- , $(gb_LinkTarget_EXCEPTIONFLAGS) \
|
||||
-))
|
||||
-endif
|
||||
-
|
||||
# vim: set noet sw=4 ts=4:
|
||||
diff --git a/writerfilter/source/doctok/qnametostr.xsl b/writerfilter/source/doctok/qnametostr.xsl
|
||||
index a416512..e3009c9 100644
|
||||
--- a/writerfilter/source/doctok/qnametostr.xsl
|
||||
+++ b/writerfilter/source/doctok/qnametostr.xsl
|
||||
@@ -22,8 +22,14 @@
|
||||
<xsl:include href="resourcetools.xsl"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
+#include "doctok/resourceids.hxx"
|
||||
+#include "resourcemodel/QNameToString.hxx"
|
||||
+
|
||||
+namespace writerfilter
|
||||
+{
|
||||
<xsl:apply-templates select=".//UML:Model" mode="qnametostr"/>
|
||||
<xsl:apply-templates select='.//UML:Model' mode='sprmidstoxml'/>
|
||||
<xsl:apply-templates select='.//UML:Model' mode='analyzerdoctokids'/>
|
||||
+}
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
diff --git a/writerfilter/source/ooxml/qnametostr.xsl b/writerfilter/source/ooxml/qnametostr.xsl
|
||||
index 1dc689f..a7a7d6c 100644
|
||||
--- a/writerfilter/source/ooxml/qnametostr.xsl
|
||||
+++ b/writerfilter/source/ooxml/qnametostr.xsl
|
||||
@@ -113,8 +113,14 @@ void ooxmlidsToXML(::std::ostream & out)
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/">
|
||||
+#include "ooxml/resourceids.hxx"
|
||||
+#include "resourcemodel/QNameToString.hxx"
|
||||
+
|
||||
+namespace writerfilter
|
||||
+{
|
||||
<xsl:call-template name="qnametostr"/>
|
||||
<xsl:call-template name="ooxmlidstoxml"/>
|
||||
+}
|
||||
</xsl:template>
|
||||
|
||||
-</xsl:stylesheet>
|
||||
\ No newline at end of file
|
||||
+</xsl:stylesheet>
|
||||
diff --git a/writerfilter/source/resourcemodel/qnametostrcore.cxx b/writerfilter/source/resourcemodel/qnametostrcore.cxx
|
||||
new file mode 100644
|
||||
index 0000000..81ed0f1
|
||||
--- /dev/null
|
||||
+++ b/writerfilter/source/resourcemodel/qnametostrcore.cxx
|
||||
@@ -0,0 +1,52 @@
|
||||
+/*
|
||||
+ * This file is part of the LibreOffice project.
|
||||
+ *
|
||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
+ *
|
||||
+ * This file incorporates work covered by the following license notice:
|
||||
+ *
|
||||
+ * Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
+ * contributor license agreements. See the NOTICE file distributed
|
||||
+ * with this work for additional information regarding copyright
|
||||
+ * ownership. The ASF licenses this file to you under the Apache
|
||||
+ * License, Version 2.0 (the "License"); you may not use this file
|
||||
+ * except in compliance with the License. You may obtain a copy of
|
||||
+ * the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
+ */
|
||||
+
|
||||
+#include <resourcemodel/QNameToString.hxx>
|
||||
+
|
||||
+namespace writerfilter
|
||||
+{
|
||||
+
|
||||
+QNameToString::Pointer_t QNameToString::pInstance;
|
||||
+
|
||||
+QNameToString::Pointer_t WRITERFILTER_RESOURCEMODEL_DLLPUBLIC QNameToString::Instance()
|
||||
+{
|
||||
+ if (pInstance.get() == NULL)
|
||||
+ pInstance = QNameToString::Pointer_t(new QNameToString());
|
||||
+
|
||||
+ return pInstance;
|
||||
+}
|
||||
+
|
||||
+string WRITERFILTER_RESOURCEMODEL_DLLPUBLIC QNameToString::operator()(Id qName)
|
||||
+{
|
||||
+ string sResult;
|
||||
+
|
||||
+ Map::const_iterator aIt = mMap.find(qName);
|
||||
+
|
||||
+ if (aIt != mMap.end())
|
||||
+ sResult = aIt->second;
|
||||
+
|
||||
+ return mMap[qName];
|
||||
+}
|
||||
+
|
||||
+QNameToString::QNameToString()
|
||||
+{
|
||||
+ init_doctok();
|
||||
+ init_ooxml();
|
||||
+}
|
||||
+
|
||||
+}
|
@ -1,193 +0,0 @@
|
||||
From 90b9271771927a72dc27e71957376dd67c8f6d43 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim.muller@collabora.co.uk>
|
||||
Date: Sun, 29 Jul 2012 19:14:05 +0200
|
||||
Subject: [PATCH 1/7] tentative initial attempt at re-work for new playbin
|
||||
|
||||
Change-Id: I257bdda8469be624d0cbeab21cff2c2e1c94cc6f
|
||||
Signed-off-by: David Tardon <dtardon@redhat.com>
|
||||
---
|
||||
avmedia/source/gstreamer/gstplayer.cxx | 94 ++++++++++++++++++++++++++--------
|
||||
1 file changed, 74 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
index 863d1e8..d95342a 100644
|
||||
--- a/avmedia/source/gstreamer/gstplayer.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
@@ -38,7 +38,9 @@
|
||||
#include "gstframegrabber.hxx"
|
||||
#include "gstwindow.hxx"
|
||||
|
||||
-#include <gst/interfaces/xoverlay.h>
|
||||
+#ifndef AVMEDIA_GST_0_10
|
||||
+# include <gst/video/videooverlay.h>
|
||||
+#endif
|
||||
|
||||
#define AVMEDIA_GST_PLAYER_IMPLEMENTATIONNAME "com.sun.star.comp.avmedia.Player_GStreamer"
|
||||
#define AVMEDIA_GST_PLAYER_SERVICENAME "com.sun.star.media.Player_GStreamer"
|
||||
@@ -96,7 +98,7 @@ Player::~Player()
|
||||
if( mpPlaybin )
|
||||
{
|
||||
gst_element_set_state( mpPlaybin, GST_STATE_NULL );
|
||||
- gst_object_unref( GST_OBJECT( mpPlaybin ) );
|
||||
+ g_object_unref( G_OBJECT( mpPlaybin ) );
|
||||
|
||||
mpPlaybin = NULL;
|
||||
}
|
||||
@@ -110,7 +112,7 @@ Player::~Player()
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-static gboolean gst_pipeline_bus_callback( GstBus *, GstMessage *message, gpointer data )
|
||||
+static gboolean pipeline_bus_callback( GstBus *, GstMessage *message, gpointer data )
|
||||
{
|
||||
Player* pPlayer = static_cast<Player*>(data);
|
||||
|
||||
@@ -119,7 +121,7 @@ static gboolean gst_pipeline_bus_callback( GstBus *, GstMessage *message, gpoint
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
-static GstBusSyncReply gst_pipeline_bus_sync_handler( GstBus *, GstMessage * message, gpointer data )
|
||||
+static GstBusSyncReply pipeline_bus_sync_handler( GstBus *, GstMessage * message, gpointer data )
|
||||
{
|
||||
Player* pPlayer = static_cast<Player*>(data);
|
||||
|
||||
@@ -144,7 +146,7 @@ void Player::processMessage( GstMessage *message )
|
||||
if( newstate == GST_STATE_PAUSED &&
|
||||
pendingstate == GST_STATE_VOID_PENDING &&
|
||||
mpXOverlay )
|
||||
- gst_x_overlay_expose( mpXOverlay );
|
||||
+ gst_video_overlay_expose( mpXOverlay );
|
||||
|
||||
if (mbPlayPending)
|
||||
mbPlayPending = ((newstate == GST_STATE_READY) || (newstate == GST_STATE_PAUSED));
|
||||
@@ -154,6 +156,26 @@ void Player::processMessage( GstMessage *message )
|
||||
}
|
||||
}
|
||||
|
||||
+static gboolean wrap_element_query_position (GstElement *element, GstFormat format, gint64 *cur)
|
||||
+{
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
+ GstFormat my_format = format;
|
||||
+ return gst_element_query_position( mpPlaybin, &my_format, cur) && my_format == format && *cur > 0L;
|
||||
+#else
|
||||
+ return gst_element_query_position( element, format, cur );
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static gboolean wrap_element_query_duration (GstElement *element, GstFormat format, gint64 *duration)
|
||||
+{
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
+ GstFormat my_format = format;
|
||||
+ return gst_element_query_duration( mpPlaybin, &my_format, duration) && my_format == format && *duration > 0L;
|
||||
+#else
|
||||
+ return gst_element_query_duration( element, format, duration );
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
{
|
||||
DBG( "%p processSyncMessage: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
|
||||
@@ -169,17 +191,17 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (message->structure) {
|
||||
- if( !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) && mnWindowID != 0 ) {
|
||||
- if( mpXOverlay )
|
||||
- g_object_unref( G_OBJECT ( mpXOverlay ) );
|
||||
- mpXOverlay = GST_X_OVERLAY( GST_MESSAGE_SRC( message ) );
|
||||
- g_object_ref( G_OBJECT ( mpXOverlay ) );
|
||||
- gst_x_overlay_set_xwindow_id( mpXOverlay, mnWindowID );
|
||||
- return GST_BUS_DROP;
|
||||
- }
|
||||
+ if (gst_message_has_name (message, "prepare-xwindow-id") && mnWindowID != 0 )
|
||||
+ {
|
||||
+ if( mpXOverlay )
|
||||
+ g_object_unref( G_OBJECT ( mpXOverlay ) );
|
||||
+ mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
|
||||
+ g_object_ref( G_OBJECT ( mpXOverlay ) );
|
||||
+ gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
|
||||
+ return GST_BUS_DROP;
|
||||
}
|
||||
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_STATE_CHANGED ) {
|
||||
if( message->src == GST_OBJECT( mpPlaybin ) ) {
|
||||
GstState newstate, pendingstate;
|
||||
@@ -193,10 +215,8 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
DBG( "%p change to paused received", this );
|
||||
|
||||
if( mnDuration == 0) {
|
||||
- GstFormat format = GST_FORMAT_TIME;
|
||||
gint64 gst_duration = 0L;
|
||||
-
|
||||
- if( gst_element_query_duration( mpPlaybin, &format, &gst_duration) && format == GST_FORMAT_TIME && gst_duration > 0L )
|
||||
+ if( wrap_element_query_duration( mpPlaybin, GST_FORMAT_TIME, &gst_duration) )
|
||||
mnDuration = gst_duration;
|
||||
}
|
||||
|
||||
@@ -234,6 +254,40 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
}
|
||||
}
|
||||
}
|
||||
+#else
|
||||
+ // We get to use the exciting new playbin2 ! (now known as playbin)
|
||||
+ if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ASYNC_DONE ) {
|
||||
+ if( mnDuration == 0) {
|
||||
+ gint64 gst_duration = 0L;
|
||||
+ if( wrap_element_query_duration( mpPlaybin, GST_FORMAT_TIME, &gst_duration) )
|
||||
+ mnDuration = gst_duration;
|
||||
+ }
|
||||
+ if( mnWidth == 0 ) {
|
||||
+ GstPad *pad = NULL;
|
||||
+ GstCaps *caps;
|
||||
+
|
||||
+ g_signal_emit_by_name( mpPlaybin, "get-video-pad", 0, &pad );
|
||||
+
|
||||
+ if( pad ) {
|
||||
+ int w = 0, h = 0;
|
||||
+
|
||||
+ caps = gst_pad_get_current_caps( pad );
|
||||
+
|
||||
+ if( gst_structure_get( gst_caps_get_structure (caps, 0),
|
||||
+ "width", G_TYPE_INT, &w,
|
||||
+ "height", G_TYPE_INT, &h,
|
||||
+ NULL ) ) {
|
||||
+ mnWidth = w;
|
||||
+ mnHeight = h;
|
||||
+
|
||||
+ DBG( "queried size: %d x %d", mnWidth, mnHeight );
|
||||
+
|
||||
+ maSizeCondition.set();
|
||||
+ }
|
||||
+ gst_caps_unref( caps );
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
} else if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR ) {
|
||||
if( mnWidth == 0 ) {
|
||||
// an error occurred, set condition so that OOo thread doesn't wait for us
|
||||
@@ -265,9 +319,9 @@ void Player::preparePlaybin( const ::rtl::OUString& rURL, bool bFakeVideo )
|
||||
g_object_set( G_OBJECT( mpPlaybin ), "uri", ascURL.getStr() , NULL );
|
||||
|
||||
pBus = gst_element_get_bus( mpPlaybin );
|
||||
- gst_bus_add_watch( pBus, gst_pipeline_bus_callback, this );
|
||||
+ gst_bus_add_watch( pBus, pipeline_bus_callback, this );
|
||||
DBG( "%p set sync handler", this );
|
||||
- gst_bus_set_sync_handler( pBus, gst_pipeline_bus_sync_handler, this );
|
||||
+ gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this );
|
||||
g_object_unref( pBus );
|
||||
}
|
||||
|
||||
@@ -387,7 +441,7 @@ double SAL_CALL Player::getMediaTime( )
|
||||
// get current position in the stream
|
||||
GstFormat format = GST_FORMAT_TIME;
|
||||
gint64 gst_position;
|
||||
- if( gst_element_query_position( mpPlaybin, &format, &gst_position ) && format == GST_FORMAT_TIME && gst_position > 0L )
|
||||
+ if( wrap_element_query_position( mpPlaybin, GST_FORMAT_TIME, &gst_position ) )
|
||||
position = gst_position / 1E9;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,832 +0,0 @@
|
||||
From a3f96fb4ddcc657f4448089eff07531735f23979 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Meeks <michael.meeks@suse.com>
|
||||
Date: Mon, 30 Jul 2012 15:15:58 +0200
|
||||
Subject: [PATCH 2/7] gstreamer: make gstreamer 1.0 and 0.10 dual compile
|
||||
|
||||
Add fallback activation of an _OLD media component to the core.
|
||||
Compile both a 0.10 and 1.0 version of the gstreamer component
|
||||
|
||||
Conflicts:
|
||||
distro-configs/LibreOfficeAndroidX86.conf
|
||||
distro-configs/LibreOfficeLinux.conf
|
||||
|
||||
Change-Id: I91f65d05391cb2d7e02f9cff18f96178a128705O1
|
||||
---
|
||||
Repository.mk | 1 +
|
||||
avmedia/Library_avmediagst.mk | 8 +--
|
||||
avmedia/Module_avmedia.mk | 6 ++
|
||||
.../gstreamer/avmediagstreamer_0_10.component | 6 ++
|
||||
avmedia/source/gstreamer/gst_0_10.cxx | 15 +++++
|
||||
avmedia/source/gstreamer/gstplayer.cxx | 69 ++++++++++++++--------
|
||||
avmedia/source/gstreamer/gstplayer.hxx | 4 +-
|
||||
avmedia/source/gstreamer/gstuno.cxx | 17 ++++--
|
||||
avmedia/source/inc/mediamisc.hxx | 11 +---
|
||||
avmedia/source/viewer/mediawindowbase_impl.cxx | 21 ++++++-
|
||||
config_host.mk.in | 3 +
|
||||
configure.in | 41 +++++++++++--
|
||||
distro-configs/LibreOfficeAndroid.conf | 1 +
|
||||
distro-configs/LibreOfficeLinux.conf | 2 +-
|
||||
distro-configs/LibreOfficeOpenBSD.conf | 2 +-
|
||||
distro-configs/LibreOfficeiOS.conf | 1 +
|
||||
distro-configs/OxygenOfficeLinux.conf | 2 +-
|
||||
postprocess/packcomponents/makefile.mk | 4 ++
|
||||
scp2/InstallModule_ooo.mk | 3 +
|
||||
scp2/source/ooo/file_library_ooo.scp | 6 +-
|
||||
scp2/source/ooo/module_hidden_ooo.scp | 19 +++---
|
||||
svx/source/sdr/contact/viewcontact.cxx | 2 +-
|
||||
22 files changed, 174 insertions(+), 70 deletions(-)
|
||||
create mode 100644 avmedia/source/gstreamer/avmediagstreamer_0_10.component
|
||||
create mode 100644 avmedia/source/gstreamer/gst_0_10.cxx
|
||||
|
||||
diff --git a/Repository.mk b/Repository.mk
|
||||
index 67ba527..881029e 100644
|
||||
--- a/Repository.mk
|
||||
+++ b/Repository.mk
|
||||
@@ -417,6 +417,7 @@ endif
|
||||
|
||||
$(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
|
||||
avmediagst \
|
||||
+ avmediagst_0_10 \
|
||||
avmediawin \
|
||||
cached1 \
|
||||
collator_data \
|
||||
diff --git a/avmedia/Library_avmediagst.mk b/avmedia/Library_avmediagst.mk
|
||||
index b6323bb..b7eeacd 100644
|
||||
--- a/avmedia/Library_avmediagst.mk
|
||||
+++ b/avmedia/Library_avmediagst.mk
|
||||
@@ -33,8 +33,9 @@ $(eval $(call gb_Library_set_componentfile,avmediagst,avmedia/source/gstreamer/a
|
||||
$(eval $(call gb_Library_set_include,avmediagst,\
|
||||
$$(INCLUDE) \
|
||||
-I$(SRCDIR)/avmedia/source/inc \
|
||||
- $(shell pkg-config --cflags gstreamer-0.10, gstreamer-plugins-base-0.10) \
|
||||
+ $(GSTREAMER_CFLAGS) \
|
||||
))
|
||||
+$(eval $(call gb_Library_add_libs,avmediagst,$(GSTREAMER_LIBS)))
|
||||
|
||||
$(eval $(call gb_Library_use_api,avmediagst,\
|
||||
udkapi \
|
||||
@@ -57,11 +58,6 @@ $(eval $(call gb_Library_use_libraries,avmediagst,\
|
||||
$(gb_STDLIBS) \
|
||||
))
|
||||
|
||||
-$(eval $(call gb_Library_add_libs,avmediagst,\
|
||||
- $(shell pkg-config --libs gstreamer-0.10, gstreamer-plugins-base-0.10) \
|
||||
- -lgstinterfaces-0.10 \
|
||||
-))
|
||||
-
|
||||
$(eval $(call gb_Library_add_exception_objects,avmediagst,\
|
||||
avmedia/source/gstreamer/gstmanager \
|
||||
avmedia/source/gstreamer/gstplayer \
|
||||
diff --git a/avmedia/Module_avmedia.mk b/avmedia/Module_avmedia.mk
|
||||
index 729c24f..ef50457 100644
|
||||
--- a/avmedia/Module_avmedia.mk
|
||||
+++ b/avmedia/Module_avmedia.mk
|
||||
@@ -40,6 +40,12 @@ $(eval $(call gb_Module_add_targets,avmedia,\
|
||||
))
|
||||
endif
|
||||
|
||||
+ifeq ($(ENABLE_GSTREAMER_0_10),TRUE)
|
||||
+$(eval $(call gb_Module_add_targets,avmedia,\
|
||||
+ Library_avmediagst_0_10 \
|
||||
+))
|
||||
+endif
|
||||
+
|
||||
ifeq ($(GUIBASE),aqua)
|
||||
$(eval $(call gb_Module_add_targets,avmedia,\
|
||||
Library_avmediaQuickTime \
|
||||
diff --git a/avmedia/source/gstreamer/avmediagstreamer_0_10.component b/avmedia/source/gstreamer/avmediagstreamer_0_10.component
|
||||
new file mode 100644
|
||||
index 0000000..3fc61d7
|
||||
--- /dev/null
|
||||
+++ b/avmedia/source/gstreamer/avmediagstreamer_0_10.component
|
||||
@@ -0,0 +1,6 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<component loader="com.sun.star.loader.SharedLibrary" xmlns="http://openoffice.org/2010/uno-components">
|
||||
+ <implementation name="com.sun.star.comp.media.Manager_GStreamer_0_10">
|
||||
+ <service name="com.sun.star.comp.avmedia.Manager_GStreamer_0_10"/>
|
||||
+ </implementation>
|
||||
+</component>
|
||||
diff --git a/avmedia/source/gstreamer/gst_0_10.cxx b/avmedia/source/gstreamer/gst_0_10.cxx
|
||||
new file mode 100644
|
||||
index 0000000..a0624c4
|
||||
--- /dev/null
|
||||
+++ b/avmedia/source/gstreamer/gst_0_10.cxx
|
||||
@@ -0,0 +1,15 @@
|
||||
+#define AVMEDIA_GST_0_10
|
||||
+
|
||||
+// forward compatibility goodness
|
||||
+#include <gst/interfaces/xoverlay.h>
|
||||
+#define gst_video_overlay_expose(a) gst_x_overlay_expose(GST_X_OVERLAY (a))
|
||||
+#define gst_video_overlay_set_window_handle(a,b) gst_x_overlay_set_xwindow_id( \
|
||||
+ reinterpret_cast<GstXOverlay *>(a), (b) )
|
||||
+#define GST_VIDEO_OVERLAY(a) reinterpret_cast<GstVideoOverlay *>(a)
|
||||
+
|
||||
+// #define GstVideoOverlay GstXOverlay
|
||||
+
|
||||
+#include "gstmanager.cxx"
|
||||
+#include "gstplayer.cxx"
|
||||
+#include "gstuno.cxx"
|
||||
+#include "gstwindow.cxx"
|
||||
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
index d95342a..28e5d34 100644
|
||||
--- a/avmedia/source/gstreamer/gstplayer.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
@@ -33,7 +33,6 @@
|
||||
#include <vcl/syschild.hxx>
|
||||
#include <vcl/sysdata.hxx>
|
||||
|
||||
-
|
||||
#include "gstplayer.hxx"
|
||||
#include "gstframegrabber.hxx"
|
||||
#include "gstwindow.hxx"
|
||||
@@ -45,8 +44,14 @@
|
||||
#define AVMEDIA_GST_PLAYER_IMPLEMENTATIONNAME "com.sun.star.comp.avmedia.Player_GStreamer"
|
||||
#define AVMEDIA_GST_PLAYER_SERVICENAME "com.sun.star.media.Player_GStreamer"
|
||||
|
||||
-#if OSL_DEBUG_LEVEL > 2
|
||||
-#define DBG OSL_TRACE
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
+# define AVVERSION "gst 0.10: "
|
||||
+#else
|
||||
+# define AVVERSION "gst 1.0: "
|
||||
+#endif
|
||||
+
|
||||
+#if 1 //OSL_DEBUG_LEVEL > 2
|
||||
+#define DBG(...) do { fprintf (stderr, "%s", AVVERSION); fprintf (stderr, __VA_ARGS__); fprintf (stderr, "\n"); } while (0);
|
||||
#else
|
||||
#define DBG(...)
|
||||
#endif
|
||||
@@ -83,15 +88,22 @@ Player::Player( const uno::Reference< lang::XMultiServiceFactory >& rxMgr ) :
|
||||
|
||||
mbInitialized = gst_init_check( &argc, &argv, &pError );
|
||||
|
||||
+ DBG( "%p Player::Player", this );
|
||||
+
|
||||
if (pError != NULL)
|
||||
+ {
|
||||
// TODO: thow an exception?
|
||||
+ DBG( "%p Player::Player error '%s'", this, pError->message );
|
||||
g_error_free (pError);
|
||||
+ }
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
Player::~Player()
|
||||
{
|
||||
+ DBG( "%p Player::~Player", this );
|
||||
+
|
||||
// Release the elements and pipeline
|
||||
if( mbInitialized )
|
||||
{
|
||||
@@ -160,7 +172,7 @@ static gboolean wrap_element_query_position (GstElement *element, GstFormat form
|
||||
{
|
||||
#ifdef AVMEDIA_GST_0_10
|
||||
GstFormat my_format = format;
|
||||
- return gst_element_query_position( mpPlaybin, &my_format, cur) && my_format == format && *cur > 0L;
|
||||
+ return gst_element_query_position( element, &my_format, cur) && my_format == format && *cur > 0L;
|
||||
#else
|
||||
return gst_element_query_position( element, format, cur );
|
||||
#endif
|
||||
@@ -170,7 +182,7 @@ static gboolean wrap_element_query_duration (GstElement *element, GstFormat form
|
||||
{
|
||||
#ifdef AVMEDIA_GST_0_10
|
||||
GstFormat my_format = format;
|
||||
- return gst_element_query_duration( mpPlaybin, &my_format, duration) && my_format == format && *duration > 0L;
|
||||
+ return gst_element_query_duration( element, &my_format, duration) && my_format == format && *duration > 0L;
|
||||
#else
|
||||
return gst_element_query_duration( element, format, duration );
|
||||
#endif
|
||||
@@ -178,21 +190,27 @@ static gboolean wrap_element_query_duration (GstElement *element, GstFormat form
|
||||
|
||||
GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
{
|
||||
- DBG( "%p processSyncMessage: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
|
||||
+// DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
|
||||
|
||||
-#if OSL_DEBUG_LEVEL > 0
|
||||
+#if 1 // OSL_DEBUG_LEVEL > 0
|
||||
if ( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR )
|
||||
{
|
||||
GError* error;
|
||||
gchar* error_debug;
|
||||
|
||||
gst_message_parse_error( message, &error, &error_debug );
|
||||
- OSL_TRACE("gstreamer error: '%s' debug: '%s'", error->message, error_debug);
|
||||
+ fprintf(stderr, "gstreamer error: '%s' debug: '%s'", error->message, error_debug);
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (gst_message_has_name (message, "prepare-xwindow-id") && mnWindowID != 0 )
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
+ if (message->structure &&
|
||||
+ !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) && mnWindowID != 0 )
|
||||
+#else
|
||||
+ if (gst_message_has_name (message, "prepare-window-handle") && mnWindowID != 0 )
|
||||
+#endif
|
||||
{
|
||||
+ DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
|
||||
if( mpXOverlay )
|
||||
g_object_unref( G_OBJECT ( mpXOverlay ) );
|
||||
mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
|
||||
@@ -208,7 +226,8 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
|
||||
gst_message_parse_state_changed (message, NULL, &newstate, &pendingstate);
|
||||
|
||||
- DBG( "%p state change received, new state %d", this, newstate );
|
||||
+ DBG( "%p state change received, new state %d pending %d", this,
|
||||
+ (int)newstate, (int)pendingstate );
|
||||
if( newstate == GST_STATE_PAUSED &&
|
||||
pendingstate == GST_STATE_VOID_PENDING ) {
|
||||
|
||||
@@ -280,7 +299,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
mnWidth = w;
|
||||
mnHeight = h;
|
||||
|
||||
- DBG( "queried size: %d x %d", mnWidth, mnHeight );
|
||||
+ fprintf (stderr, "queried size: %d x %d", mnWidth, mnHeight );
|
||||
|
||||
maSizeCondition.set();
|
||||
}
|
||||
@@ -289,6 +308,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
}
|
||||
#endif
|
||||
} else if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR ) {
|
||||
+ fprintf (stderr, "Error !\n");
|
||||
if( mnWidth == 0 ) {
|
||||
// an error occurred, set condition so that OOo thread doesn't wait for us
|
||||
maSizeCondition.set();
|
||||
@@ -353,7 +373,7 @@ bool Player::create( const ::rtl::OUString& rURL )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-void SAL_CALL Player::start( )
|
||||
+void SAL_CALL Player::start()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
// set the pipeline state to READY and run the loop
|
||||
@@ -366,7 +386,7 @@ void SAL_CALL Player::start( )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-void SAL_CALL Player::stop( )
|
||||
+void SAL_CALL Player::stop()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
// set the pipeline in PAUSED STATE
|
||||
@@ -397,7 +417,7 @@ sal_Bool SAL_CALL Player::isPlaying()
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-double SAL_CALL Player::getDuration( )
|
||||
+double SAL_CALL Player::getDuration()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
// slideshow checks for non-zero duration, so cheat here
|
||||
@@ -432,14 +452,13 @@ void SAL_CALL Player::setMediaTime( double fTime )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-double SAL_CALL Player::getMediaTime( )
|
||||
+double SAL_CALL Player::getMediaTime()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
double position = 0.0;
|
||||
|
||||
if( mpPlaybin ) {
|
||||
// get current position in the stream
|
||||
- GstFormat format = GST_FORMAT_TIME;
|
||||
gint64 gst_position;
|
||||
if( wrap_element_query_position( mpPlaybin, GST_FORMAT_TIME, &gst_position ) )
|
||||
position = gst_position / 1E9;
|
||||
@@ -450,7 +469,7 @@ double SAL_CALL Player::getMediaTime( )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-double SAL_CALL Player::getRate( )
|
||||
+double SAL_CALL Player::getRate()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
double rate = 0.0;
|
||||
@@ -475,7 +494,7 @@ void SAL_CALL Player::setPlaybackLoop( sal_Bool bSet )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-sal_Bool SAL_CALL Player::isPlaybackLoop( )
|
||||
+sal_Bool SAL_CALL Player::isPlaybackLoop()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
// TODO check how to do with GST
|
||||
@@ -506,7 +525,7 @@ void SAL_CALL Player::setMute( sal_Bool bSet )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-sal_Bool SAL_CALL Player::isMute( )
|
||||
+sal_Bool SAL_CALL Player::isMute()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
return mbMuted;
|
||||
@@ -530,7 +549,7 @@ void SAL_CALL Player::setVolumeDB( sal_Int16 nVolumeDB )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-sal_Int16 SAL_CALL Player::getVolumeDB( )
|
||||
+sal_Int16 SAL_CALL Player::getVolumeDB()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
sal_Int16 nVolumeDB(0);
|
||||
@@ -548,7 +567,7 @@ sal_Int16 SAL_CALL Player::getVolumeDB( )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-awt::Size SAL_CALL Player::getPreferredPlayerWindowSize( )
|
||||
+awt::Size SAL_CALL Player::getPreferredPlayerWindowSize()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
awt::Size aSize( 0, 0 );
|
||||
@@ -556,7 +575,7 @@ awt::Size SAL_CALL Player::getPreferredPlayerWindowSize( )
|
||||
DBG( "%p Player::getPreferredPlayerWindowSize, member %d x %d", this, mnWidth, mnHeight );
|
||||
|
||||
TimeValue aTimeout = { 10, 0 };
|
||||
-#if OSL_DEBUG_LEVEL > 2
|
||||
+#if 1 // OSL_DEBUG_LEVEL > 2
|
||||
osl::Condition::Result aResult =
|
||||
#endif
|
||||
maSizeCondition.wait( &aTimeout );
|
||||
@@ -612,7 +631,7 @@ uno::Reference< ::media::XPlayerWindow > SAL_CALL Player::createPlayerWindow( co
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber( )
|
||||
+uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
uno::Reference< media::XFrameGrabber > xRet;
|
||||
@@ -622,7 +641,7 @@ uno::Reference< media::XFrameGrabber > SAL_CALL Player::createFrameGrabber( )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-::rtl::OUString SAL_CALL Player::getImplementationName( )
|
||||
+::rtl::OUString SAL_CALL Player::getImplementationName()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( AVMEDIA_GST_PLAYER_IMPLEMENTATIONNAME ) );
|
||||
@@ -638,7 +657,7 @@ sal_Bool SAL_CALL Player::supportsService( const ::rtl::OUString& ServiceName )
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
-uno::Sequence< ::rtl::OUString > SAL_CALL Player::getSupportedServiceNames( )
|
||||
+uno::Sequence< ::rtl::OUString > SAL_CALL Player::getSupportedServiceNames()
|
||||
throw (uno::RuntimeException)
|
||||
{
|
||||
uno::Sequence< ::rtl::OUString > aRet(1);
|
||||
diff --git a/avmedia/source/gstreamer/gstplayer.hxx b/avmedia/source/gstreamer/gstplayer.hxx
|
||||
index b5d7d83..65c3e46 100644
|
||||
--- a/avmedia/source/gstreamer/gstplayer.hxx
|
||||
+++ b/avmedia/source/gstreamer/gstplayer.hxx
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#include "com/sun/star/media/XPlayer.hdl"
|
||||
|
||||
-typedef struct _GstXOverlay GstXOverlay;
|
||||
+typedef struct _GstVideoOverlay GstVideoOverlay;
|
||||
|
||||
namespace avmedia { namespace gstreamer {
|
||||
|
||||
@@ -95,7 +95,7 @@ private:
|
||||
sal_Bool mbInitialized;
|
||||
|
||||
long mnWindowID;
|
||||
- GstXOverlay* mpXOverlay;
|
||||
+ GstVideoOverlay* mpXOverlay;
|
||||
gint64 mnDuration;
|
||||
int mnWidth;
|
||||
int mnHeight;
|
||||
diff --git a/avmedia/source/gstreamer/gstuno.cxx b/avmedia/source/gstreamer/gstuno.cxx
|
||||
index 8095353..affb8eb2 100644
|
||||
--- a/avmedia/source/gstreamer/gstuno.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstuno.cxx
|
||||
@@ -26,6 +26,7 @@
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
+#include "mediamisc.hxx"
|
||||
#include "gstmanager.hxx"
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
@@ -34,6 +35,14 @@ using namespace ::com::sun::star;
|
||||
// - factory methods -
|
||||
// -------------------
|
||||
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
+# define IMPL_NAME "com.sun.star.comp.media.Manager_GStreamer_0_10"
|
||||
+# define SERVICE_NAME AVMEDIA_MANAGER_SERVICE_NAME_OLD // "com.sun.star.comp.avmedia.Manager_GStreamer_0_10"
|
||||
+#else
|
||||
+# define IMPL_NAME "com.sun.star.comp.media.Manager_GStreamer"
|
||||
+# define SERVICE_NAME AVMEDIA_MANAGER_SERVICE_NAME // "com.sun.star.comp.avmedia.Manager_GStreamer"
|
||||
+#endif
|
||||
+
|
||||
static uno::Reference< uno::XInterface > SAL_CALL create_MediaPlayer( const uno::Reference< lang::XMultiServiceFactory >& rxFact )
|
||||
{
|
||||
return uno::Reference< uno::XInterface >( *new ::avmedia::gstreamer::Manager( rxFact ) );
|
||||
@@ -44,14 +53,12 @@ extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_C
|
||||
uno::Reference< lang::XSingleServiceFactory > xFactory;
|
||||
void* pRet = 0;
|
||||
|
||||
- if( rtl_str_compare( pImplName, "com.sun.star.comp.media.Manager_GStreamer" ) == 0 )
|
||||
+ if( rtl_str_compare( pImplName, IMPL_NAME ) == 0 )
|
||||
{
|
||||
- const ::rtl::OUString aServiceName( ::rtl::OUString("com.sun.star.media.Manager_GStreamer" ) );
|
||||
-
|
||||
+ const ::rtl::OUString aServiceName( SERVICE_NAME );
|
||||
xFactory = uno::Reference< lang::XSingleServiceFactory >( ::cppu::createSingleFactory(
|
||||
reinterpret_cast< lang::XMultiServiceFactory* >( pServiceManager ),
|
||||
- ::rtl::OUString("com.sun.star.comp.media.Manager_GStreamer" ),
|
||||
- create_MediaPlayer, uno::Sequence< ::rtl::OUString >( &aServiceName, 1 ) ) );
|
||||
+ IMPL_NAME, create_MediaPlayer, uno::Sequence< ::rtl::OUString >( &aServiceName, 1 ) ) );
|
||||
}
|
||||
|
||||
if( xFactory.is() )
|
||||
diff --git a/avmedia/source/inc/mediamisc.hxx b/avmedia/source/inc/mediamisc.hxx
|
||||
index 8f129bb..f042629 100644
|
||||
--- a/avmedia/source/inc/mediamisc.hxx
|
||||
+++ b/avmedia/source/inc/mediamisc.hxx
|
||||
@@ -30,23 +30,14 @@ class ResMgr;
|
||||
|
||||
#define AVMEDIA_RESID( nId ) ResId( nId, * ::avmedia::GetResMgr() )
|
||||
|
||||
-#ifdef GSTREAMER
|
||||
-#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_GStreamer"
|
||||
-#else
|
||||
#ifdef WNT
|
||||
-
|
||||
#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_DirectX"
|
||||
-
|
||||
#else
|
||||
#ifdef QUARTZ
|
||||
-
|
||||
#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_QuickTime"
|
||||
-
|
||||
#else
|
||||
-
|
||||
+#define AVMEDIA_MANAGER_SERVICE_NAME_OLD "com.sun.star.comp.avmedia.Manager_GStreamer_0_10"
|
||||
#define AVMEDIA_MANAGER_SERVICE_NAME "com.sun.star.comp.avmedia.Manager_GStreamer"
|
||||
-
|
||||
-#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
diff --git a/avmedia/source/viewer/mediawindowbase_impl.cxx b/avmedia/source/viewer/mediawindowbase_impl.cxx
|
||||
index 79e0bdf..fd2ffba 100644
|
||||
--- a/avmedia/source/viewer/mediawindowbase_impl.cxx
|
||||
+++ b/avmedia/source/viewer/mediawindowbase_impl.cxx
|
||||
@@ -72,10 +72,25 @@ uno::Reference< media::XPlayer > MediaWindowBaseImpl::createPlayer( const ::rtl:
|
||||
{
|
||||
try
|
||||
{
|
||||
+ uno::Reference< ::com::sun::star::media::XManager > xManager;
|
||||
|
||||
- uno::Reference< ::com::sun::star::media::XManager > xManager(
|
||||
- xFactory->createInstance( ::rtl::OUString( AVMEDIA_MANAGER_SERVICE_NAME ) ),
|
||||
- uno::UNO_QUERY );
|
||||
+ try {
|
||||
+ xManager = uno::Reference< ::com::sun::star::media::XManager >(
|
||||
+ xFactory->createInstance( AVMEDIA_MANAGER_SERVICE_NAME ),
|
||||
+ uno::UNO_QUERY );
|
||||
+ } catch ( const uno::Exception &e ) {
|
||||
+ }
|
||||
+
|
||||
+// a fallback path just for gstreamer which has
|
||||
+// two significant versions deployed at once ...
|
||||
+#ifdef AVMEDIA_MANAGER_SERVICE_NAME_OLD
|
||||
+ if( !xManager.is() )
|
||||
+ {
|
||||
+ xManager = uno::Reference< ::com::sun::star::media::XManager >(
|
||||
+ xFactory->createInstance( AVMEDIA_MANAGER_SERVICE_NAME_OLD ),
|
||||
+ uno::UNO_QUERY );
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
if( xManager.is() )
|
||||
{
|
||||
diff --git a/config_host.mk.in b/config_host.mk.in
|
||||
index 4fb80d1..42355cc 100644
|
||||
--- a/config_host.mk.in
|
||||
+++ b/config_host.mk.in
|
||||
@@ -112,6 +112,7 @@ export ENABLE_GIO=@ENABLE_GIO@
|
||||
export ENABLE_GNOMEVFS=@ENABLE_GNOMEVFS@
|
||||
export ENABLE_GRAPHITE=@ENABLE_GRAPHITE@
|
||||
export ENABLE_GSTREAMER=@ENABLE_GSTREAMER@
|
||||
+export ENABLE_GSTREAMER_0_10=@ENABLE_GSTREAMER_0_10@
|
||||
export ENABLE_GTK3=@ENABLE_GTK3@
|
||||
export ENABLE_GTK=@ENABLE_GTK@
|
||||
export ENABLE_GTK_PRINT=@ENABLE_GTK_PRINT@
|
||||
@@ -182,6 +183,8 @@ export GRAPHITE_LIBS=@GRAPHITE_LIBS@
|
||||
@x_Cygwin@ export GREP=@WIN_GREP@
|
||||
export GSTREAMER_CFLAGS=@GSTREAMER_CFLAGS@
|
||||
export GSTREAMER_LIBS=@GSTREAMER_LIBS@
|
||||
+export GSTREAMER_0_10_CFLAGS=@GSTREAMER_0_10_CFLAGS@
|
||||
+export GSTREAMER_0_10_LIBS=@GSTREAMER_0_10_LIBS@
|
||||
export GTHREAD_CFLAGS=@GTHREAD_CFLAGS@
|
||||
export GTHREAD_LIBS=@GTHREAD_LIBS@
|
||||
export GTK3_CFLAGS=@GTK3_CFLAGS@
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 651963a..46b9892 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -171,6 +171,7 @@ case "$host_os" in
|
||||
solaris*)
|
||||
test_gtk=yes
|
||||
build_gstreamer=yes
|
||||
+ build_gstreamer_0_10=yes
|
||||
test_tde=yes
|
||||
test_kde=yes
|
||||
test_freetype=yes
|
||||
@@ -200,6 +201,7 @@ solaris*)
|
||||
linux-gnu*|k*bsd*-gnu*)
|
||||
test_gtk=yes
|
||||
build_gstreamer=yes
|
||||
+ build_gstreamer_0_10=yes
|
||||
test_tde=yes
|
||||
test_kde=yes
|
||||
test_kde4=yes
|
||||
@@ -287,6 +289,7 @@ darwin*) # Mac OS X or iOS
|
||||
freebsd*)
|
||||
test_gtk=yes
|
||||
build_gstreamer=yes
|
||||
+ build_gstreamer_0_10=yes
|
||||
test_tde=yes
|
||||
test_kde=yes
|
||||
test_kde4=yes
|
||||
@@ -316,6 +319,7 @@ freebsd*)
|
||||
*netbsd*)
|
||||
test_gtk=yes
|
||||
build_gstreamer=yes
|
||||
+ build_gstreamer_0_10=yes
|
||||
test_tde=no
|
||||
test_kde=no
|
||||
test_kde4=yes
|
||||
@@ -344,6 +348,7 @@ openbsd*)
|
||||
dragonfly*)
|
||||
test_gtk=yes
|
||||
build_gstreamer=yes
|
||||
+ build_gstreamer_0_10=yes
|
||||
test_tde=yes
|
||||
test_kde=yes
|
||||
test_kde4=yes
|
||||
@@ -354,6 +359,7 @@ dragonfly*)
|
||||
|
||||
linux-androideabi*)
|
||||
build_gstreamer=no
|
||||
+ build_gstreamer_0_10=no
|
||||
test_cups=no
|
||||
test_fontconfig=no
|
||||
test_freetype=no
|
||||
@@ -855,9 +861,14 @@ AC_ARG_ENABLE(randr-link,
|
||||
,enable_randr_link=yes)
|
||||
|
||||
AC_ARG_ENABLE(gstreamer,
|
||||
- AS_HELP_STRING([--disable-gstreamer],
|
||||
+ AS_HELP_STRING([--enable-gstreamer],
|
||||
+ [Enable building with the new gstreamer 1.0 avmedia backend.]),
|
||||
+,enable_gstreamer=no)
|
||||
+
|
||||
+AC_ARG_ENABLE(gstreamer-0-10,
|
||||
+ AS_HELP_STRING([--disable-gstreamer-0-10],
|
||||
[Disable building the gstreamer avmedia backend.]),
|
||||
-,enable_gstreamer=yes)
|
||||
+,enable_gstreamer_0_10=yes)
|
||||
|
||||
AC_ARG_ENABLE(neon,
|
||||
AS_HELP_STRING([--disable-neon],
|
||||
@@ -3703,6 +3714,7 @@ if test "$enable_headless" = "yes"; then
|
||||
test_fontconfig=yes
|
||||
test_gtk=no
|
||||
build_gstreamer=no
|
||||
+ build_gstreamer_0_10=no
|
||||
test_tde=no
|
||||
test_kde=no
|
||||
test_kde4=no
|
||||
@@ -8936,20 +8948,39 @@ dnl ===================================================================
|
||||
|
||||
ENABLE_GSTREAMER=""
|
||||
|
||||
-if test "$build_gstreamer" = "yes"; then
|
||||
+if test "$build_gstreamer" = "yes"; then
|
||||
|
||||
AC_MSG_CHECKING([whether to enable the GStreamer avmedia backend])
|
||||
if test "x$enable_gstreamer" != "xno"; then
|
||||
ENABLE_GSTREAMER="TRUE"
|
||||
AC_MSG_RESULT([yes])
|
||||
- PKG_CHECK_MODULES( GSTREAMER, gstreamer-0.10 gstreamer-plugins-base-0.10 )
|
||||
+ PKG_CHECK_MODULES( GSTREAMER, gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-video-1.0 )
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
fi
|
||||
-
|
||||
+AC_SUBST(GSTREAMER_CFLAGS)
|
||||
+AC_SUBST(GSTREAMER_LIBS)
|
||||
AC_SUBST(ENABLE_GSTREAMER)
|
||||
|
||||
+
|
||||
+ENABLE_GSTREAMER_0_10=""
|
||||
+if test "$build_gstreamer_0_10" = "yes"; then
|
||||
+
|
||||
+ AC_MSG_CHECKING([whether to enable the GStreamer avmedia backend])
|
||||
+ if test "x$enable_gstreamer_0_10" != "xno"; then
|
||||
+ ENABLE_GSTREAMER_0_10="TRUE"
|
||||
+ AC_MSG_RESULT([yes])
|
||||
+ PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 )
|
||||
+ else
|
||||
+ AC_MSG_RESULT([no])
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+AC_SUBST(GSTREAMER_0_10_CFLAGS)
|
||||
+AC_SUBST(GSTREAMER_0_10_LIBS)
|
||||
+AC_SUBST(ENABLE_GSTREAMER_0_10)
|
||||
+
|
||||
dnl ===================================================================
|
||||
dnl Check whether the OpenGL libraries are available
|
||||
dnl ===================================================================
|
||||
diff --git a/distro-configs/LibreOfficeAndroid.conf b/distro-configs/LibreOfficeAndroid.conf
|
||||
index d789052..8acf153 100644
|
||||
--- a/distro-configs/LibreOfficeAndroid.conf
|
||||
+++ b/distro-configs/LibreOfficeAndroid.conf
|
||||
@@ -6,6 +6,7 @@
|
||||
--disable-ext-report-builder
|
||||
--disable-gconf
|
||||
--disable-gnome-vfs
|
||||
+--disable-gstreamer-0-10
|
||||
--disable-gstreamer
|
||||
--disable-lockdown
|
||||
--disable-mozilla
|
||||
diff --git a/distro-configs/LibreOfficeLinux.conf b/distro-configs/LibreOfficeLinux.conf
|
||||
index 21342e4..8e0ff3e 100644
|
||||
--- a/distro-configs/LibreOfficeLinux.conf
|
||||
+++ b/distro-configs/LibreOfficeLinux.conf
|
||||
@@ -26,7 +26,7 @@
|
||||
--enable-odk
|
||||
--enable-lockdown
|
||||
--enable-kde
|
||||
---enable-gstreamer
|
||||
+--enable-gstreamer-0-10
|
||||
--enable-evolution2
|
||||
--enable-gnome-vfs
|
||||
--enable-ext-wiki-publisher
|
||||
diff --git a/distro-configs/LibreOfficeOpenBSD.conf b/distro-configs/LibreOfficeOpenBSD.conf
|
||||
index f55550a..b03a03f 100644
|
||||
--- a/distro-configs/LibreOfficeOpenBSD.conf
|
||||
+++ b/distro-configs/LibreOfficeOpenBSD.conf
|
||||
@@ -11,7 +11,7 @@
|
||||
--disable-randr-link
|
||||
--disable-unix-qstart-libpng
|
||||
--enable-binfilter
|
||||
---enable-gstreamer
|
||||
+--enable-gstreamer-0-10
|
||||
--enable-lockdown
|
||||
--enable-ext-presenter-minimizer
|
||||
--enable-ext-pdfimport
|
||||
diff --git a/distro-configs/LibreOfficeiOS.conf b/distro-configs/LibreOfficeiOS.conf
|
||||
index 705cb63..67afb67 100644
|
||||
--- a/distro-configs/LibreOfficeiOS.conf
|
||||
+++ b/distro-configs/LibreOfficeiOS.conf
|
||||
@@ -7,6 +7,7 @@
|
||||
--disable-extension-integration
|
||||
--disable-gconf
|
||||
--disable-gnome-vfs
|
||||
+--disable-gstreamer-0-10
|
||||
--disable-gstreamer
|
||||
--disable-librsvg
|
||||
--disable-lockdown
|
||||
diff --git a/distro-configs/OxygenOfficeLinux.conf b/distro-configs/OxygenOfficeLinux.conf
|
||||
index a9203f2..62cd1d6 100644
|
||||
--- a/distro-configs/OxygenOfficeLinux.conf
|
||||
+++ b/distro-configs/OxygenOfficeLinux.conf
|
||||
@@ -73,7 +73,7 @@
|
||||
--without-junit
|
||||
--with-helppack-integration
|
||||
--enable-odk
|
||||
---enable-gstreamer
|
||||
+--enable-gstreamer-0-10
|
||||
--enable-graphite
|
||||
--enable-dependency-tracking
|
||||
--enable-python=internal
|
||||
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
|
||||
index 09e296b..572d9c2 100644
|
||||
--- a/postprocess/packcomponents/makefile.mk
|
||||
+++ b/postprocess/packcomponents/makefile.mk
|
||||
@@ -403,6 +403,10 @@ my_components += component/connectivity/source/drivers/evoab2/evoab
|
||||
my_components += component/avmedia/source/gstreamer/avmediagstreamer
|
||||
.END
|
||||
|
||||
+.IF "$(OS)" != "WNT" && "$(ENABLE_GSTREAMER_0_10)" != ""
|
||||
+my_components += component/avmedia/source/gstreamer/avmediagstreamer_0_10
|
||||
+.END
|
||||
+
|
||||
.INCLUDE: target.mk
|
||||
|
||||
ALLTAR : $(MISC)/services.rdb
|
||||
diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk
|
||||
index 0c49414..b6b2a0e 100644
|
||||
--- a/scp2/InstallModule_ooo.mk
|
||||
+++ b/scp2/InstallModule_ooo.mk
|
||||
@@ -152,6 +152,9 @@ $(eval $(call gb_InstallModule_add_defs,scp2/ooo,\
|
||||
$(if $(filter TRUE,$(ENABLE_GSTREAMER)),\
|
||||
-DGSTREAMER \
|
||||
) \
|
||||
+ $(if $(filter TRUE,$(ENABLE_GSTREAMER_0_10)),\
|
||||
+ -DGSTREAMER_0_10 \
|
||||
+ ) \
|
||||
$(if $(WINDOWS_SDK_HOME),\
|
||||
-DHAVE_WINDOWS_SDK \
|
||||
) \
|
||||
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
|
||||
index 66c50e2..40466b3 100644
|
||||
--- a/scp2/source/ooo/file_library_ooo.scp
|
||||
+++ b/scp2/source/ooo/file_library_ooo.scp
|
||||
@@ -1415,7 +1415,11 @@ STD_LIB_FILE( gid_File_Lib_AVMedia, avmedia )
|
||||
|
||||
#ifdef GSTREAMER
|
||||
SPECIAL_LIB_FILE_PATCH( gid_File_Lib_AVMediaGStreamer, avmediagst )
|
||||
-#elif defined WNT
|
||||
+#endif
|
||||
+#ifdef GSTREAMER_0_10
|
||||
+SPECIAL_LIB_FILE_PATCH( gid_File_Lib_AVMediaGStreamer_0_10, avmediagst_0_10 )
|
||||
+#endif
|
||||
+#if defined WNT
|
||||
#ifdef ENABLE_DIRECTX
|
||||
SPECIAL_LIB_FILE( gid_File_Lib_AVMediaWin, avmediawin )
|
||||
#endif
|
||||
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
|
||||
index 76e062b..ef4c59b 100644
|
||||
--- a/scp2/source/ooo/module_hidden_ooo.scp
|
||||
+++ b/scp2/source/ooo/module_hidden_ooo.scp
|
||||
@@ -203,15 +203,15 @@ Module gid_Module_Root_Files_4
|
||||
gid_File_Lib_Charttools,
|
||||
gid_File_Lib_Ctl,
|
||||
gid_File_Lib_Cui,
|
||||
- gid_File_Lib_Sdbt,
|
||||
- gid_File_Lib_Dbmm,
|
||||
+ gid_File_Lib_Sdbt,
|
||||
+ gid_File_Lib_Dbmm,
|
||||
gid_File_Lib_Dba,
|
||||
gid_File_Lib_Dbase2,
|
||||
gid_File_Lib_Dbaxml,
|
||||
gid_File_Lib_Dbt,
|
||||
gid_File_Lib_Dbfile,
|
||||
gid_File_Lib_Drawinglayer,
|
||||
- gid_File_Lib_Editeng,
|
||||
+ gid_File_Lib_Editeng,
|
||||
gid_File_Lib_Flat,
|
||||
gid_File_Lib_For,
|
||||
gid_File_Lib_Forui,
|
||||
@@ -250,15 +250,16 @@ Module gid_Module_Root_Files_4
|
||||
gid_File_Lib_Svx,
|
||||
gid_File_Lib_AVMedia,
|
||||
gid_File_Lib_AVMediaWin,
|
||||
- gid_File_Lib_AVMediaGStreamer,
|
||||
+ gid_File_Lib_AVMediaGStreamer,
|
||||
+ gid_File_Lib_AVMediaGStreamer_0_10,
|
||||
gid_File_Lib_BaseGfx,
|
||||
- gid_File_Lib_Merged,
|
||||
+ gid_File_Lib_Merged,
|
||||
gid_File_Lib_Sysdtrans,
|
||||
gid_File_Lib_Sw,
|
||||
gid_File_Lib_TextConversionDlgs,
|
||||
gid_File_Lib_Tk,
|
||||
- gid_File_Lib_Acc,
|
||||
- gid_File_Lib_BaseBmp,
|
||||
+ gid_File_Lib_Acc,
|
||||
+ gid_File_Lib_BaseBmp,
|
||||
gid_File_Lib_Tools,
|
||||
gid_File_Lib_Utl,
|
||||
gid_File_Lib_Uui,
|
||||
@@ -284,8 +285,8 @@ Module gid_Module_Root_Files_4
|
||||
gid_File_Lib_Fwm,
|
||||
gid_File_Lib_Lprx2,
|
||||
gid_File_Lib_Lprxw,
|
||||
- gid_File_Lib_Libtextcat,
|
||||
- gid_File_Lib_Guesslang,
|
||||
+ gid_File_Lib_Libtextcat,
|
||||
+ gid_File_Lib_Guesslang,
|
||||
gid_File_Lib_Tfu);
|
||||
End
|
||||
|
||||
diff --git a/svx/source/sdr/contact/viewcontact.cxx b/svx/source/sdr/contact/viewcontact.cxx
|
||||
index 3f1f986..b4dec00 100644
|
||||
--- a/svx/source/sdr/contact/viewcontact.cxx
|
||||
+++ b/svx/source/sdr/contact/viewcontact.cxx
|
||||
@@ -269,7 +269,7 @@ namespace sdr
|
||||
|
||||
drawinglayer::primitive2d::Primitive2DSequence ViewContact::createViewIndependentPrimitive2DSequence() const
|
||||
{
|
||||
- // This is the default impelemtation and should never be called (see header). If this is called,
|
||||
+ // This is the default implementation and should never be called (see header). If this is called,
|
||||
// someone implemented a ViewContact (VC) visualisation object without defining the visualisation by
|
||||
// providing a seqence of primitives -> which cannot be correct.
|
||||
// Since we have no access to any known model data here, the default implementation creates a yellow placeholder
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,730 +0,0 @@
|
||||
From f05438dda954965651f332b2f7ee97dbdd951b98 Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Thu, 20 Sep 2012 10:28:56 +0200
|
||||
Subject: [PATCH 2/4] rework selection of transformer for an XSLT filter
|
||||
|
||||
(cherry picked from commit ca0ea73a4ab104031a16b5bac7a9bb6e57c77ba0)
|
||||
|
||||
Conflicts:
|
||||
filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
|
||||
|
||||
Change-Id: I765762f11813c6b612416a8db2707bf94114c876
|
||||
---
|
||||
filter/source/xsltdialog/typedetectionexport.cxx | 2 +-
|
||||
filter/source/xsltdialog/typedetectionimport.cxx | 2 +-
|
||||
filter/source/xsltdialog/xmlfiltercommon.hxx | 2 +-
|
||||
filter/source/xsltdialog/xmlfilterhelpids.hrc | 3 +-
|
||||
.../source/xsltdialog/xmlfiltersettingsdialog.cxx | 19 ++----
|
||||
filter/source/xsltdialog/xmlfiltertabpagexslt.cxx | 20 ++-----
|
||||
filter/source/xsltdialog/xmlfiltertabpagexslt.hrc | 5 +-
|
||||
filter/source/xsltdialog/xmlfiltertabpagexslt.hxx | 5 +-
|
||||
filter/source/xsltdialog/xmlfiltertabpagexslt.src | 23 +++----
|
||||
filter/source/xsltfilter/LibXSLTTransformer.cxx | 4 +-
|
||||
filter/source/xsltfilter/LibXSLTTransformer.hxx | 18 +++---
|
||||
filter/source/xsltfilter/XSLTFilter.cxx | 70 +++++++++++++++-------
|
||||
.../sun/star/comp/xsltfilter/XSLTransformer.java | 13 ++--
|
||||
filter/source/xsltfilter/components.rdb | 4 +-
|
||||
filter/source/xsltfilter/xsltfilter.component | 2 +-
|
||||
offapi/UnoApi_offapi.mk | 9 +++
|
||||
offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl | 30 ++++++++++
|
||||
offapi/com/sun/star/xml/xslt/XSLTTransformer.idl | 32 ++++++++++
|
||||
offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl | 36 +++++++++++
|
||||
19 files changed, 204 insertions(+), 95 deletions(-)
|
||||
create mode 100644 offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
|
||||
create mode 100644 offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
|
||||
create mode 100644 offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
|
||||
|
||||
diff --git a/filter/source/xsltdialog/typedetectionexport.cxx b/filter/source/xsltdialog/typedetectionexport.cxx
|
||||
index a01b462..83bf7fa 100644
|
||||
--- a/filter/source/xsltdialog/typedetectionexport.cxx
|
||||
+++ b/filter/source/xsltdialog/typedetectionexport.cxx
|
||||
@@ -192,7 +192,7 @@ void TypeDetectionExporter::doExport( Reference< XOutputStream > xOS, const XML
|
||||
sValue += sComma;
|
||||
sValue += sXSLTFilterService;
|
||||
sValue += sDelim;
|
||||
- sValue += pFilter->maXSLTTransformerImpl;
|
||||
+ sValue += OUString::valueOf( pFilter->mbNeedsXSLT2 );
|
||||
sValue += sDelim;
|
||||
|
||||
const application_info_impl* pAppInfo = getApplicationInfo( pFilter->maExportService );
|
||||
diff --git a/filter/source/xsltdialog/typedetectionimport.cxx b/filter/source/xsltdialog/typedetectionimport.cxx
|
||||
index 3d3b937..50428e7 100644
|
||||
--- a/filter/source/xsltdialog/typedetectionimport.cxx
|
||||
+++ b/filter/source/xsltdialog/typedetectionimport.cxx
|
||||
@@ -180,7 +180,7 @@ filter_info_impl* TypeDetectionImporter::createFilterForNode( Node * pNode )
|
||||
|
||||
OUString aAdapterService( getSubdata( 0, aDelim, aFilterUserData ) );
|
||||
//Import/ExportService
|
||||
- pFilter->maXSLTTransformerImpl = getSubdata( 1, aDelim, aFilterUserData );
|
||||
+ pFilter->mbNeedsXSLT2 = getSubdata( 1, aDelim, aFilterUserData ).toBoolean();
|
||||
pFilter->maImportService = getSubdata( 2, aDelim, aFilterUserData );
|
||||
pFilter->maExportService = getSubdata( 3, aDelim, aFilterUserData );
|
||||
pFilter->maImportXSLT = getSubdata( 4, aDelim, aFilterUserData );
|
||||
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hxx b/filter/source/xsltdialog/xmlfiltercommon.hxx
|
||||
index cdb767e..41be2c7 100644
|
||||
--- a/filter/source/xsltdialog/xmlfiltercommon.hxx
|
||||
+++ b/filter/source/xsltdialog/xmlfiltercommon.hxx
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
|
||||
sal_Bool mbReadonly;
|
||||
|
||||
- rtl::OUString maXSLTTransformerImpl;
|
||||
+ sal_Bool mbNeedsXSLT2;
|
||||
|
||||
filter_info_impl();
|
||||
filter_info_impl( const filter_info_impl& rInfo );
|
||||
diff --git a/filter/source/xsltdialog/xmlfilterhelpids.hrc b/filter/source/xsltdialog/xmlfilterhelpids.hrc
|
||||
index 558a274..a22fa52 100644
|
||||
--- a/filter/source/xsltdialog/xmlfilterhelpids.hrc
|
||||
+++ b/filter/source/xsltdialog/xmlfilterhelpids.hrc
|
||||
@@ -50,8 +50,7 @@
|
||||
#define HID_XML_FILTER_DOCTYPE "FILTER_HID_XML_FILTER_DOCTYPE"
|
||||
#define HID_XML_FILTER_DTD "FILTER_HID_XML_FILTER_DTD"
|
||||
#define HID_XML_FILTER_DTD_BROWSE "FILTER_HID_XML_FILTER_DTD_BROWSE"
|
||||
-#define HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J "FILTER_HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J"
|
||||
-#define HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT "FILTER_HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT"
|
||||
+#define HID_XML_FILTER_NEEDS_XSLT2 "FILTER_HID_XML_FILTER_NEEDS_XSLT2"
|
||||
#define HID_XML_FILTER_EXPORT_XSLT "FILTER_HID_XML_FILTER_EXPORT_XSLT"
|
||||
#define HID_XML_FILTER_EXPORT_XSLT_BROWSE "FILTER_HID_XML_FILTER_EXPORT_XSLT_BROWSE"
|
||||
#define HID_XML_FILTER_IMPORT_XSLT "FILTER_HID_XML_FILTER_IMPORT_XSLT"
|
||||
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
|
||||
index 558ac0d..a54b520 100644
|
||||
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
|
||||
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
|
||||
@@ -1164,7 +1164,7 @@ void XMLFilterSettingsDialog::initFilterList()
|
||||
continue;
|
||||
|
||||
// get filter information from userdata
|
||||
- pTempFilter->maXSLTTransformerImpl = aUserData[1];
|
||||
+ pTempFilter->mbNeedsXSLT2 = aUserData[1].toBoolean();
|
||||
pTempFilter->maImportService = aUserData[2];
|
||||
pTempFilter->maExportService = aUserData[3];
|
||||
pTempFilter->maImportXSLT = aUserData[4];
|
||||
@@ -1590,7 +1590,8 @@ filter_info_impl::filter_info_impl()
|
||||
: maFlags(0x00080040),
|
||||
maFileFormatVersion(0),
|
||||
mnDocumentIconID(0),
|
||||
- mbReadonly(sal_False)
|
||||
+ mbReadonly(sal_False),
|
||||
+ mbNeedsXSLT2(sal_False)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1615,7 +1616,7 @@ filter_info_impl::filter_info_impl( const filter_info_impl& rInfo ) :
|
||||
maFileFormatVersion( rInfo.maFileFormatVersion ),
|
||||
mnDocumentIconID( rInfo.mnDocumentIconID ),
|
||||
mbReadonly( rInfo.mbReadonly ),
|
||||
- maXSLTTransformerImpl( rInfo.maXSLTTransformerImpl )
|
||||
+ mbNeedsXSLT2( rInfo.mbNeedsXSLT2 )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1639,7 +1640,7 @@ int filter_info_impl::operator==( const filter_info_impl& r ) const
|
||||
maImportTemplate != r.maImportTemplate ||
|
||||
maFlags != r.maFlags ||
|
||||
maFileFormatVersion != r.maFileFormatVersion ||
|
||||
- maXSLTTransformerImpl != r.maXSLTTransformerImpl
|
||||
+ mbNeedsXSLT2 != r.mbNeedsXSLT2
|
||||
)
|
||||
return false;
|
||||
|
||||
@@ -1653,15 +1654,7 @@ Sequence< OUString > filter_info_impl::getFilterUserData() const
|
||||
Sequence< OUString > aUserData(8);
|
||||
|
||||
aUserData[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.documentconversion.XSLTFilter" ) );
|
||||
- /*
|
||||
- const application_info_impl* pInfo = getApplicationInfo( maDocumentService );
|
||||
- if( pInfo )
|
||||
- {
|
||||
- aUserData[2] = pInfo->maXMLImporter;
|
||||
- aUserData[3] = pInfo->maXMLExporter;
|
||||
- }
|
||||
- */
|
||||
- aUserData[1] = maXSLTTransformerImpl;
|
||||
+ aUserData[1] = OUString::valueOf( mbNeedsXSLT2 );
|
||||
aUserData[2] = maImportService;
|
||||
aUserData[3] = maExportService;
|
||||
aUserData[4] = maImportXSLT;
|
||||
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
|
||||
index dc1a4c8..b4cae16 100644
|
||||
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
|
||||
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
|
||||
@@ -68,9 +68,8 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co
|
||||
maEDImportTemplate( this, ResId( ED_XML_IMPORT_TEMPLATE, rResMgr ), INET_PROT_FILE ),
|
||||
maPBImportTemplate( this, ResId( PB_XML_IMPORT_TEMPLATE_BROWSE, rResMgr ) ),
|
||||
|
||||
- maFTTransformationService( this, ResId (FT_XML_TRANSFORM_SERVICE, rResMgr ) ),
|
||||
- maRBTransformationServiceLibXSLT( this, ResId (RB_XML_TRANSFORM_SERVICE_LIBXSLT, rResMgr ) ),
|
||||
- maRBTransformationServiceSaxonJ( this, ResId (RB_XML_TRANSFORM_SERVICE_SAXON_J, rResMgr ) ),
|
||||
+ maFTNeedsXSLT2( this, ResId (FT_XML_NEEDS_XSLT2, rResMgr ) ),
|
||||
+ maCBNeedsXSLT2( this, ResId (CB_XML_NEEDS_XSLT2, rResMgr ) ),
|
||||
|
||||
sHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "http://" ) ),
|
||||
sSHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "shttp://" ) ),
|
||||
@@ -100,8 +99,7 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co
|
||||
maEDExportXSLT.SetHelpId( HID_XML_FILTER_EXPORT_XSLT );
|
||||
maEDImportXSLT.SetHelpId( HID_XML_FILTER_IMPORT_XSLT );
|
||||
maEDImportTemplate.SetHelpId( HID_XML_FILTER_IMPORT_TEMPLATE );
|
||||
- maRBTransformationServiceLibXSLT.SetHelpId( HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT );
|
||||
- maRBTransformationServiceSaxonJ.SetHelpId( HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J );
|
||||
+ maCBNeedsXSLT2.SetHelpId( HID_XML_FILTER_NEEDS_XSLT2 );
|
||||
}
|
||||
|
||||
XMLFilterTabPageXSLT::~XMLFilterTabPageXSLT()
|
||||
@@ -117,10 +115,7 @@ bool XMLFilterTabPageXSLT::FillInfo( filter_info_impl* pInfo )
|
||||
pInfo->maExportXSLT = GetURL( maEDExportXSLT );
|
||||
pInfo->maImportXSLT = GetURL( maEDImportXSLT );
|
||||
pInfo->maImportTemplate = GetURL( maEDImportTemplate );
|
||||
- pInfo->maXSLTTransformerImpl
|
||||
- = maRBTransformationServiceSaxonJ.IsChecked() ? OUString(
|
||||
- RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.JAXTHelper" ))
|
||||
- : OUString(RTL_CONSTASCII_USTRINGPARAM( "" ));
|
||||
+ pInfo->mbNeedsXSLT2 = maCBNeedsXSLT2.IsChecked();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -136,12 +131,7 @@ void XMLFilterTabPageXSLT::SetInfo(const filter_info_impl* pInfo)
|
||||
SetURL( maEDExportXSLT, pInfo->maExportXSLT );
|
||||
SetURL( maEDImportXSLT, pInfo->maImportXSLT );
|
||||
SetURL( maEDImportTemplate, pInfo->maImportTemplate );
|
||||
- if (pInfo->maXSLTTransformerImpl.equals(OUString(
|
||||
- RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.JAXTHelper" )))) {
|
||||
- maRBTransformationServiceSaxonJ.Check();
|
||||
- } else {
|
||||
- maRBTransformationServiceLibXSLT.Check();
|
||||
- }
|
||||
+ maCBNeedsXSLT2.Check( pInfo->mbNeedsXSLT2 );
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
|
||||
index 12a9d46..bdd39e7 100644
|
||||
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
|
||||
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
|
||||
@@ -44,8 +44,7 @@
|
||||
#define FT_XML_IMPORT_TEMPLATE 12
|
||||
#define ED_XML_IMPORT_TEMPLATE 13
|
||||
#define PB_XML_IMPORT_TEMPLATE_BROWSE 14
|
||||
-#define FT_XML_TRANSFORM_SERVICE 15
|
||||
-#define RB_XML_TRANSFORM_SERVICE_LIBXSLT 16
|
||||
-#define RB_XML_TRANSFORM_SERVICE_SAXON_J 17
|
||||
+#define FT_XML_NEEDS_XSLT2 15
|
||||
+#define CB_XML_NEEDS_XSLT2 16
|
||||
|
||||
#endif
|
||||
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
|
||||
index a9d8062..a0375b7 100644
|
||||
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
|
||||
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
|
||||
@@ -69,9 +69,8 @@ public:
|
||||
SvtURLBox maEDImportTemplate;
|
||||
PushButton maPBImportTemplate;
|
||||
|
||||
- FixedText maFTTransformationService;
|
||||
- RadioButton maRBTransformationServiceLibXSLT;
|
||||
- RadioButton maRBTransformationServiceSaxonJ;
|
||||
+ FixedText maFTNeedsXSLT2;
|
||||
+ CheckBox maCBNeedsXSLT2;
|
||||
|
||||
private:
|
||||
void SetURL( SvtURLBox& rURLBox, const rtl::OUString& rURL );
|
||||
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.src b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
|
||||
index 2d0391c..96b83f7 100644
|
||||
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.src
|
||||
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
|
||||
@@ -175,27 +175,18 @@ TabPage RID_XML_FILTER_TABPAGE_XSLT
|
||||
|
||||
// XSLT transformation service --------------------------------------------------------
|
||||
|
||||
- FixedText FT_XML_TRANSFORM_SERVICE
|
||||
+ CheckBox CB_XML_NEEDS_XSLT2
|
||||
{
|
||||
+ HelpID = HID_XML_FILTER_NEEDS_XSLT2;
|
||||
Pos = MAP_APPFONT ( FIRST_ROW_X , FIRST_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + FIXED_TEXT_OFFSET + EDIT_OFFSET ) ;
|
||||
- Size = MAP_APPFONT ( FIRST_ROW_WIDTH , 8 ) ;
|
||||
- Text [ en-US ] = "XSLT Transformation Service";
|
||||
- };
|
||||
-
|
||||
- RadioButton RB_XML_TRANSFORM_SERVICE_LIBXSLT
|
||||
- {
|
||||
- HelpID = HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT;
|
||||
- Pos = MAP_APPFONT ( SECOND_ROW_X , SECOND_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + EDIT_OFFSET ) ;
|
||||
- Size = MAP_APPFONT ( SECOND_ROW_WIDTH - SPACING - BROWSE_WIDTH, 12 ) ;
|
||||
- Text[ en-US ] = "~Builtin (LibXSLT)";
|
||||
+ Size = MAP_APPFONT ( 12, 12 ) ;
|
||||
};
|
||||
|
||||
- RadioButton RB_XML_TRANSFORM_SERVICE_SAXON_J
|
||||
+ FixedText FT_XML_NEEDS_XSLT2
|
||||
{
|
||||
- HelpID = HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J;
|
||||
- Pos = MAP_APPFONT ( SECOND_ROW_X , SECOND_ROW_Y + 6 * ROW_HEIGHT + 6 * SPACING + EDIT_OFFSET ) ;
|
||||
- Size = MAP_APPFONT ( SECOND_ROW_WIDTH - SPACING - BROWSE_WIDTH, 12 ) ;
|
||||
- Text[ en-US ] = "~Saxon/J";
|
||||
+ Pos = MAP_APPFONT ( FIRST_ROW_X + 3 * SPACING , SECOND_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + FIXED_TEXT_OFFSET + EDIT_OFFSET ) ;
|
||||
+ Size = MAP_APPFONT ( 2 * FIRST_ROW_WIDTH , 8 ) ; // guess width
|
||||
+ Text [ en-US ] = "The filter needs XSLT 2.0 processor";
|
||||
};
|
||||
|
||||
};
|
||||
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
|
||||
index ff57fc1..ab03316 100644
|
||||
--- a/filter/source/xsltfilter/LibXSLTTransformer.cxx
|
||||
+++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx
|
||||
@@ -488,9 +488,11 @@ namespace XSLT
|
||||
}
|
||||
|
||||
void
|
||||
- LibXSLTTransformer::initialize(const Sequence<Any>& params)
|
||||
+ LibXSLTTransformer::initialize(const Sequence<Any>& args)
|
||||
throw (RuntimeException)
|
||||
{
|
||||
+ Sequence<Any> params;
|
||||
+ args[0] >>= params;
|
||||
xmlSubstituteEntitiesDefault(0);
|
||||
m_parameters.clear();
|
||||
for (int i = 0; i < params.getLength(); i++)
|
||||
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.hxx b/filter/source/xsltfilter/LibXSLTTransformer.hxx
|
||||
index 444cb2f..a7c71a6 100644
|
||||
--- a/filter/source/xsltfilter/LibXSLTTransformer.hxx
|
||||
+++ b/filter/source/xsltfilter/LibXSLTTransformer.hxx
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
#include <cppuhelper/factory.hxx>
|
||||
#include <cppuhelper/servicefactory.hxx>
|
||||
-#include <cppuhelper/implbase4.hxx>
|
||||
+#include <cppuhelper/implbase1.hxx>
|
||||
#include <cppuhelper/implbase.hxx>
|
||||
|
||||
#include <rtl/ref.hxx>
|
||||
@@ -51,14 +51,12 @@
|
||||
|
||||
#include <com/sun/star/uno/Any.hxx>
|
||||
|
||||
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||
#include <com/sun/star/io/XInputStream.hpp>
|
||||
#include <com/sun/star/io/XOutputStream.hpp>
|
||||
-#include <com/sun/star/io/XActiveDataSource.hpp>
|
||||
-#include <com/sun/star/io/XActiveDataSink.hpp>
|
||||
-#include <com/sun/star/io/XActiveDataControl.hpp>
|
||||
#include <com/sun/star/io/XStreamListener.hpp>
|
||||
-#include <com/sun/star/lang/XInitialization.hpp>
|
||||
#include <com/sun/star/beans/NamedValue.hpp>
|
||||
+#include <com/sun/star/xml/xslt/XXSLTTransformer.hpp>
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::cppu;
|
||||
@@ -66,7 +64,6 @@ using namespace ::osl;
|
||||
using namespace ::com::sun::star::beans;
|
||||
using namespace ::com::sun::star::io;
|
||||
using namespace ::com::sun::star::uno;
|
||||
-using namespace ::com::sun::star::lang;
|
||||
|
||||
using ::std::list;
|
||||
using ::std::map;
|
||||
@@ -90,8 +87,7 @@ namespace XSLT
|
||||
*
|
||||
* See Reader below.
|
||||
*/
|
||||
- class LibXSLTTransformer : public WeakImplHelper4<XActiveDataSink,
|
||||
- XActiveDataSource, XActiveDataControl, XInitialization>
|
||||
+ class LibXSLTTransformer : public WeakImplHelper1<com::sun::star::xml::xslt::XXSLTTransformer>
|
||||
{
|
||||
private:
|
||||
static const char* const PARAM_SOURCE_URL;
|
||||
@@ -102,7 +98,7 @@ namespace XSLT
|
||||
static const char* const PARAM_DOCTYPE_PUBLIC;
|
||||
|
||||
// the UNO ServiceFactory
|
||||
- com::sun::star::uno::Reference<XMultiServiceFactory> m_rServiceFactory;
|
||||
+ com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> m_rServiceFactory;
|
||||
|
||||
com::sun::star::uno::Reference<XInputStream> m_rInputStream;
|
||||
|
||||
@@ -129,7 +125,7 @@ namespace XSLT
|
||||
public:
|
||||
|
||||
// ctor...
|
||||
- LibXSLTTransformer(const com::sun::star::uno::Reference<XMultiServiceFactory> &r);
|
||||
+ LibXSLTTransformer(const com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> &r);
|
||||
|
||||
// XActiveDataSink
|
||||
virtual void SAL_CALL
|
||||
@@ -169,7 +165,7 @@ namespace XSLT
|
||||
::std::map<const char*, OString> SAL_CALL
|
||||
getParameters();
|
||||
|
||||
- virtual com::sun::star::uno::Reference<XMultiServiceFactory> SAL_CALL
|
||||
+ virtual com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> SAL_CALL
|
||||
getServiceFactory() {
|
||||
return m_rServiceFactory;
|
||||
}
|
||||
diff --git a/filter/source/xsltfilter/XSLTFilter.cxx b/filter/source/xsltfilter/XSLTFilter.cxx
|
||||
index f3ebd2f..36968e7 100644
|
||||
--- a/filter/source/xsltfilter/XSLTFilter.cxx
|
||||
+++ b/filter/source/xsltfilter/XSLTFilter.cxx
|
||||
@@ -41,6 +41,7 @@
|
||||
#include <rtl/strbuf.hxx>
|
||||
#include <tools/urlobj.hxx>
|
||||
|
||||
+#include <comphelper/componentcontext.hxx>
|
||||
#include <comphelper/interaction.hxx>
|
||||
|
||||
#include <com/sun/star/lang/XComponent.hpp>
|
||||
@@ -72,6 +73,8 @@
|
||||
#include <com/sun/star/task/XInteractionHandler.hpp>
|
||||
#include <com/sun/star/task/XInteractionRequest.hpp>
|
||||
#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
|
||||
+#include <com/sun/star/xml/xslt/XSLT2Transformer.hpp>
|
||||
+#include <com/sun/star/xml/xslt/XSLTTransformer.hpp>
|
||||
|
||||
#include <xmloff/attrlist.hxx>
|
||||
|
||||
@@ -102,14 +105,10 @@ namespace XSLT
|
||||
* them to an XSLT transformation service. XSLT transformation errors are
|
||||
* reported to XSLTFilter.
|
||||
*
|
||||
- * Currently, two implementations for the XSLT transformation service exist:
|
||||
- * a java based service (see XSLTransformer.java) and a libxslt based
|
||||
- * service (LibXSLTTransformer.cxx).
|
||||
- *
|
||||
- * The libxslt implementation will be used by default.
|
||||
- *
|
||||
- * If the value of the 2nd "UserData" parameter of the filter configuration is
|
||||
- * not empty, the service name given there will be used.
|
||||
+ * Currently, our transformation service is libxslt based, so it
|
||||
+ * only supports XSLT 1.0. There is a possibility to use XSLT 2.0
|
||||
+ * supporting service from an extension for a specific filter; the
|
||||
+ * service must support com.sun.star.xml.xslt.XSLT2Transformer.
|
||||
*/
|
||||
class XSLTFilter : public WeakImplHelper4<XImportFilter, XExportFilter,
|
||||
XStreamListener, ExtendedDocumentHandlerAdapter>
|
||||
@@ -122,7 +121,7 @@ namespace XSLT
|
||||
// DocumentHandler interface of the css::xml::sax::Writer service
|
||||
css::uno::Reference<XOutputStream> m_rOutputStream;
|
||||
|
||||
- css::uno::Reference<XActiveDataControl> m_tcontrol;
|
||||
+ css::uno::Reference<xslt::XXSLTTransformer> m_tcontrol;
|
||||
|
||||
oslCondition m_cTransformed;
|
||||
sal_Bool m_bTerminated;
|
||||
@@ -135,6 +134,8 @@ namespace XSLT
|
||||
OUString
|
||||
expandUrl(const OUString&);
|
||||
|
||||
+ css::uno::Reference<xslt::XXSLTTransformer> impl_createTransformer(const rtl::OUString& rTransformer, const Sequence<Any>& rArgs);
|
||||
+
|
||||
public:
|
||||
|
||||
// ctor...
|
||||
@@ -211,6 +212,43 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
|
||||
return sExpandedUrl;
|
||||
}
|
||||
|
||||
+ css::uno::Reference<xslt::XXSLTTransformer>
|
||||
+ XSLTFilter::impl_createTransformer(const rtl::OUString& rTransformer, const Sequence<Any>& rArgs)
|
||||
+ {
|
||||
+ css::uno::Reference<xslt::XXSLTTransformer> xTransformer;
|
||||
+
|
||||
+ // check if the filter needs XSLT-2.0-capable transformer
|
||||
+ // COMPATIBILITY: libreoffice 3.5/3.6 used to save the impl.
|
||||
+ // name of the XSLT 2.0 transformation service there, so check
|
||||
+ // for that too (it is sufficient to check that there is _a_
|
||||
+ // service name there)
|
||||
+ if (rTransformer.toBoolean() || rTransformer.match("com.sun."))
|
||||
+ {
|
||||
+ try
|
||||
+ {
|
||||
+ xTransformer = xslt::XSLT2Transformer::create(
|
||||
+ comphelper::ComponentContext(m_rServiceFactory).getUNOContext(), rArgs);
|
||||
+ }
|
||||
+ catch (const Exception&)
|
||||
+ {
|
||||
+ // TODO: put a dialog telling about the need to install
|
||||
+ // xslt2-transformer extension here
|
||||
+ SAL_WARN("filter.xslt", "could not create XSLT 2.0 transformer");
|
||||
+ throw;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // instantiation of XSLT 2.0 transformer service failed, or the
|
||||
+ // filter does not need it
|
||||
+ if (!xTransformer.is())
|
||||
+ {
|
||||
+ xTransformer = xslt::XSLTTransformer::create(
|
||||
+ comphelper::ComponentContext(m_rServiceFactory).getUNOContext(), rArgs);
|
||||
+ }
|
||||
+
|
||||
+ return xTransformer;
|
||||
+ }
|
||||
+
|
||||
void
|
||||
XSLTFilter::started() throw (RuntimeException)
|
||||
{
|
||||
@@ -322,11 +360,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
|
||||
nv.Value <<= OUString(INetURLObject(aURL).getBase());
|
||||
args[2] <<= nv;
|
||||
|
||||
- OUString serviceName("com.sun.star.comp.documentconversion.LibXSLTTransformer");
|
||||
- if (!msUserData[1].isEmpty())
|
||||
- serviceName = msUserData[1];
|
||||
-
|
||||
- m_tcontrol = css::uno::Reference<XActiveDataControl> (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY);
|
||||
+ m_tcontrol = impl_createTransformer(msUserData[1], args);
|
||||
|
||||
OSL_ASSERT(xHandler.is());
|
||||
OSL_ASSERT(xInputStream.is());
|
||||
@@ -486,11 +520,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
|
||||
nv.Value <<= m_aExportBaseUrl;
|
||||
args[3] <<= nv;
|
||||
|
||||
- OUString serviceName("com.sun.star.comp.documentconversion.LibXSLTTransformer");
|
||||
- if (!msUserData[1].isEmpty())
|
||||
- serviceName = msUserData[1];
|
||||
-
|
||||
- m_tcontrol = css::uno::Reference<XActiveDataControl> (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY);
|
||||
+ m_tcontrol = impl_createTransformer(msUserData[1], args);
|
||||
|
||||
OSL_ASSERT(m_rOutputStream.is());
|
||||
OSL_ASSERT(m_tcontrol.is());
|
||||
@@ -566,7 +596,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
|
||||
// --------------------------------------
|
||||
#define FILTER_SERVICE_NAME "com.sun.star.documentconversion.XSLTFilter"
|
||||
#define FILTER_IMPL_NAME "com.sun.star.comp.documentconversion.XSLTFilter"
|
||||
-#define TRANSFORMER_SERVICE_NAME "com.sun.star.documentconversion.LibXSLTTransformer"
|
||||
+#define TRANSFORMER_SERVICE_NAME "com.sun.star.xml.xslt.XSLTTransformer"
|
||||
#define TRANSFORMER_IMPL_NAME "com.sun.star.comp.documentconversion.LibXSLTTransformer"
|
||||
|
||||
static css::uno::Reference<XInterface> SAL_CALL
|
||||
diff --git a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
|
||||
index 1a6d8cf..7036646 100644
|
||||
--- a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
|
||||
+++ b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
|
||||
@@ -75,6 +75,7 @@ import com.sun.star.registry.XRegistryKey;
|
||||
import com.sun.star.uno.AnyConverter;
|
||||
import com.sun.star.uno.Type;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
+import com.sun.star.xml.xslt.XXSLTTransformer;
|
||||
|
||||
//Uno to java Adaptor
|
||||
import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter;
|
||||
@@ -88,8 +89,8 @@ import net.sf.saxon.FeatureKeys;
|
||||
* component on demand (__getServiceFactory()).
|
||||
*/
|
||||
public class XSLTransformer
|
||||
- implements XTypeProvider, XServiceName, XServiceInfo, XActiveDataSink,
|
||||
- XActiveDataSource, XActiveDataControl, XInitialization, URIResolver, EntityResolver {
|
||||
+ implements XTypeProvider, XServiceName, XServiceInfo, XXSLTTransformer,
|
||||
+ URIResolver, EntityResolver {
|
||||
|
||||
/**
|
||||
* This component provides java based XSL transformations
|
||||
@@ -132,7 +133,7 @@ public class XSLTransformer
|
||||
svcfactory = msf;
|
||||
}
|
||||
|
||||
- public void initialize(Object[] values) throws com.sun.star.uno.Exception {
|
||||
+ public void initialize(Object[] args) throws com.sun.star.uno.Exception {
|
||||
// some configurable debugging
|
||||
String statsfilepath = null;
|
||||
if ((statsfilepath = System.getProperty(STATSPROP)) != null) {
|
||||
@@ -146,6 +147,8 @@ public class XSLTransformer
|
||||
}
|
||||
}
|
||||
|
||||
+ Object[] values = (Object[]) args[0];
|
||||
+
|
||||
// reading the values
|
||||
NamedValue nv = null;
|
||||
debug("The transformation's parameters as 'name = value' pairs:\n");
|
||||
@@ -444,7 +447,7 @@ public class XSLTransformer
|
||||
}
|
||||
}
|
||||
} // --- component management interfaces... ---
|
||||
- private final static String _serviceName = "com.sun.star.comp.JAXTHelper";
|
||||
+ private final static String _serviceName = "com.sun.star.xml.xslt.XSLT2Transformer";
|
||||
|
||||
// Implement methods from interface XTypeProvider
|
||||
public byte[] getImplementationId() {
|
||||
@@ -494,7 +497,7 @@ public class XSLTransformer
|
||||
public static XSingleServiceFactory __getServiceFactory(
|
||||
String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) {
|
||||
XSingleServiceFactory xSingleServiceFactory = null;
|
||||
- if (implName.indexOf("XSLTransformer") != -1) {
|
||||
+ if (implName.equals(XSLTransformer.class.getName())) {
|
||||
xSingleServiceFactory = FactoryHelper.getServiceFactory(XSLTransformer.class,
|
||||
_serviceName, multiFactory, regKey);
|
||||
}
|
||||
diff --git a/filter/source/xsltfilter/components.rdb b/filter/source/xsltfilter/components.rdb
|
||||
index 080cb7a..6014b82 100644
|
||||
--- a/filter/source/xsltfilter/components.rdb
|
||||
+++ b/filter/source/xsltfilter/components.rdb
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<components xmlns="http://openoffice.org/2010/uno-components">
|
||||
<component loader="com.sun.star.loader.Java2" uri="./XSLTFilter.jar">
|
||||
- <implementation name="XSLTransformer">
|
||||
- <service name="com.sun.star.comp.JAXTHelper"/>
|
||||
+ <implementation name="com.sun.star.comp.xsltfilter.XSLTransformer">
|
||||
+ <service name="com.sun.star.xml.xslt.XSLT2Transformer"/>
|
||||
</implementation>
|
||||
</component>
|
||||
</components>
|
||||
diff --git a/filter/source/xsltfilter/xsltfilter.component b/filter/source/xsltfilter/xsltfilter.component
|
||||
index 5fb985c..296f2bc 100644
|
||||
--- a/filter/source/xsltfilter/xsltfilter.component
|
||||
+++ b/filter/source/xsltfilter/xsltfilter.component
|
||||
@@ -32,6 +32,6 @@
|
||||
<service name="com.sun.star.documentconversion.XSLTFilter"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.documentconversion.LibXSLTTransformer">
|
||||
- <service name="com.sun.star.documentconversion.LibXSLTTransformer"/>
|
||||
+ <service name="com.sun.star.xml.xslt.XSLTTransformer"/>
|
||||
</implementation>
|
||||
</component>
|
||||
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
|
||||
index 98cca5f..007cc52 100644
|
||||
--- a/offapi/UnoApi_offapi.mk
|
||||
+++ b/offapi/UnoApi_offapi.mk
|
||||
@@ -285,6 +285,10 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/xml/sax,\
|
||||
FastShapeContextHandler \
|
||||
FastTokenHandler \
|
||||
))
|
||||
+$(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/xml/xslt,\
|
||||
+ XSLTTransformer \
|
||||
+ XSLT2Transformer \
|
||||
+))
|
||||
|
||||
|
||||
$(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star,\
|
||||
@@ -4255,6 +4259,11 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xml/xpath,\
|
||||
XXPathExtension \
|
||||
XXPathObject \
|
||||
))
|
||||
+
|
||||
+$(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xml/xslt,\
|
||||
+ XXSLTTransformer \
|
||||
+))
|
||||
+
|
||||
$(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xsd,\
|
||||
DataTypeClass \
|
||||
WhiteSpaceTreatment \
|
||||
diff --git a/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl b/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
|
||||
new file mode 100644
|
||||
index 0000000..af5abed
|
||||
--- /dev/null
|
||||
+++ b/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
|
||||
@@ -0,0 +1,30 @@
|
||||
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
+/*
|
||||
+ * This file is part of the LibreOffice project.
|
||||
+ *
|
||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
+ */
|
||||
+
|
||||
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XSLT2TRANSFORMER_IDL
|
||||
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XSLT2TRANSFORMER_IDL
|
||||
+
|
||||
+#include <com/sun/star/xml/xslt/XXSLTTransformer.idl>
|
||||
+
|
||||
+module com { module sun { module star { module xml { module xslt {
|
||||
+
|
||||
+/** Get XSLT filter transformer supporting XSLT 2.0.
|
||||
+
|
||||
+ @since LibreOffice 3.7
|
||||
+ */
|
||||
+service XSLT2Transformer : XXSLTTransformer
|
||||
+{
|
||||
+ create([in] sequence<any> args);
|
||||
+};
|
||||
+
|
||||
+}; }; }; }; };
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl b/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
|
||||
new file mode 100644
|
||||
index 0000000..f9d75e3
|
||||
--- /dev/null
|
||||
+++ b/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
+/*
|
||||
+ * This file is part of the LibreOffice project.
|
||||
+ *
|
||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
+ */
|
||||
+
|
||||
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XSLTTRANSFORMER_IDL
|
||||
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XSLTTRANSFORMER_IDL
|
||||
+
|
||||
+#include <com/sun/star/xml/xslt/XXSLTTransformer.idl>
|
||||
+
|
||||
+module com { module sun { module star { module xml { module xslt {
|
||||
+
|
||||
+/** Get unspecified XSLT filter transformer.
|
||||
+
|
||||
+ <p>It is not safe to expect support for any features except XSLT 1.0 .
|
||||
+
|
||||
+ @since LibreOffice 3.7
|
||||
+ */
|
||||
+service XSLTTransformer : XXSLTTransformer
|
||||
+{
|
||||
+ create([in] sequence<any> args);
|
||||
+};
|
||||
+
|
||||
+}; }; }; }; };
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl b/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
|
||||
new file mode 100644
|
||||
index 0000000..9316c25
|
||||
--- /dev/null
|
||||
+++ b/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
|
||||
@@ -0,0 +1,36 @@
|
||||
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
+/*
|
||||
+ * This file is part of the LibreOffice project.
|
||||
+ *
|
||||
+ * This Source Code Form is subject to the terms of the Mozilla Public
|
||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
+ */
|
||||
+
|
||||
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XXSLTTRANSFORMER_IDL
|
||||
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XXSLTTRANSFORMER_IDL
|
||||
+
|
||||
+#include <com/sun/star/io/XActiveDataControl.idl>
|
||||
+#include <com/sun/star/io/XActiveDataSink.idl>
|
||||
+#include <com/sun/star/io/XActiveDataSource.idl>
|
||||
+#include <com/sun/star/lang/XInitialization.idl>
|
||||
+
|
||||
+module com { module sun { module star { module xml { module xslt {
|
||||
+
|
||||
+/** An interface for XSLT transformers.
|
||||
+
|
||||
+ @since LibreOffice 3.7
|
||||
+ */
|
||||
+interface XXSLTTransformer
|
||||
+{
|
||||
+ interface com::sun::star::io::XActiveDataControl;
|
||||
+ interface com::sun::star::io::XActiveDataSink;
|
||||
+ interface com::sun::star::io::XActiveDataSource;
|
||||
+ interface com::sun::star::lang::XInitialization;
|
||||
+};
|
||||
+
|
||||
+}; }; }; }; };
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
--
|
||||
1.7.11.7
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,157 +0,0 @@
|
||||
From 03bd2fd7b97f8f8164039203027f89e82c1c4212 Mon Sep 17 00:00:00 2001
|
||||
From: David Tardon <dtardon@redhat.com>
|
||||
Date: Fri, 10 Aug 2012 08:11:46 +0200
|
||||
Subject: [PATCH 3/7] make avmedia build with gstreamer-0.10
|
||||
|
||||
Change-Id: I6124904cecdb8ea66477f40b6771a103a8058c10
|
||||
Signed-off-by: David Tardon <dtardon@redhat.com>
|
||||
---
|
||||
avmedia/Library_avmediagst_0_10.mk | 65 +++++++++++++++++++++++++++++++++
|
||||
avmedia/source/gstreamer/gstmanager.cxx | 2 +
|
||||
avmedia/source/gstreamer/gstplayer.cxx | 8 ++--
|
||||
configure.in | 2 +-
|
||||
4 files changed, 73 insertions(+), 4 deletions(-)
|
||||
create mode 100644 avmedia/Library_avmediagst_0_10.mk
|
||||
|
||||
diff --git a/avmedia/Library_avmediagst_0_10.mk b/avmedia/Library_avmediagst_0_10.mk
|
||||
new file mode 100644
|
||||
index 0000000..9347c2b
|
||||
--- /dev/null
|
||||
+++ b/avmedia/Library_avmediagst_0_10.mk
|
||||
@@ -0,0 +1,65 @@
|
||||
+# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
|
||||
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
|
||||
+#
|
||||
+# The contents of this file are subject to the Mozilla Public License Version
|
||||
+# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
+# the License or as specified alternatively below. You may obtain a copy of
|
||||
+# the License at http://www.mozilla.org/MPL/
|
||||
+#
|
||||
+# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
+# for the specific language governing rights and limitations under the
|
||||
+# License.
|
||||
+#
|
||||
+# The Initial Developer of the Original Code is
|
||||
+# Matúš Kukan <matus.kukan@gmail.com>
|
||||
+# Portions created by the Initial Developer are Copyright (C) 2011 the
|
||||
+# Initial Developer. All Rights Reserved.
|
||||
+#
|
||||
+# Major Contributor(s):
|
||||
+#
|
||||
+# For minor contributions see the git repository.
|
||||
+#
|
||||
+# Alternatively, the contents of this file may be used under the terms of
|
||||
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
|
||||
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
|
||||
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
|
||||
+# instead of those above.
|
||||
+
|
||||
+$(eval $(call gb_Library_Library,avmediagst_0_10))
|
||||
+
|
||||
+$(eval $(call gb_Library_set_componentfile,avmediagst_0_10,avmedia/source/gstreamer/avmediagstreamer_0_10))
|
||||
+
|
||||
+$(eval $(call gb_Library_set_include,avmediagst_0_10,\
|
||||
+ $$(INCLUDE) \
|
||||
+ -I$(SRCDIR)/avmedia/source/inc \
|
||||
+ $(GSTREAMER_0_10_CFLAGS) \
|
||||
+))
|
||||
+$(eval $(call gb_Library_add_libs,avmediagst_0_10,$(GSTREAMER_0_10_LIBS)))
|
||||
+
|
||||
+$(eval $(call gb_Library_use_api,avmediagst_0_10,\
|
||||
+ offapi \
|
||||
+ udkapi \
|
||||
+))
|
||||
+
|
||||
+ifeq ($(GUI),WNT)
|
||||
+$(eval $(call gb_Library_add_defs,avmediagst_0_10,\
|
||||
+ -DWINNT
|
||||
+))
|
||||
+endif
|
||||
+
|
||||
+$(eval $(call gb_Library_use_libraries,avmediagst_0_10,\
|
||||
+ comphelper \
|
||||
+ cppu \
|
||||
+ cppuhelper \
|
||||
+ sal \
|
||||
+ tl \
|
||||
+ vcl \
|
||||
+ $(gb_STDLIBS) \
|
||||
+))
|
||||
+
|
||||
+$(eval $(call gb_Library_add_exception_objects,avmediagst_0_10,\
|
||||
+ avmedia/source/gstreamer/gst_0_10 \
|
||||
+))
|
||||
+
|
||||
+# vim: set noet sw=4 ts=4:
|
||||
diff --git a/avmedia/source/gstreamer/gstmanager.cxx b/avmedia/source/gstreamer/gstmanager.cxx
|
||||
index 6b3ffff..f04e5cc 100644
|
||||
--- a/avmedia/source/gstreamer/gstmanager.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstmanager.cxx
|
||||
@@ -34,11 +34,13 @@
|
||||
#define AVMEDIA_GST_MANAGER_IMPLEMENTATIONNAME "com.sun.star.comp.avmedia.Manager_GStreamer"
|
||||
#define AVMEDIA_GST_MANAGER_SERVICENAME "com.sun.star.media.Manager"
|
||||
|
||||
+#if !defined DBG
|
||||
#if OSL_DEBUG_LEVEL > 2
|
||||
#define DBG OSL_TRACE
|
||||
#else
|
||||
#define DBG(...)
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
|
||||
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
index 28e5d34..3654410 100644
|
||||
--- a/avmedia/source/gstreamer/gstplayer.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
@@ -50,11 +50,13 @@
|
||||
# define AVVERSION "gst 1.0: "
|
||||
#endif
|
||||
|
||||
-#if 1 //OSL_DEBUG_LEVEL > 2
|
||||
+#if !defined DBG
|
||||
+#if OSL_DEBUG_LEVEL > 2
|
||||
#define DBG(...) do { fprintf (stderr, "%s", AVVERSION); fprintf (stderr, __VA_ARGS__); fprintf (stderr, "\n"); } while (0);
|
||||
#else
|
||||
#define DBG(...)
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
|
||||
@@ -192,7 +194,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
{
|
||||
// DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
|
||||
|
||||
-#if 1 // OSL_DEBUG_LEVEL > 0
|
||||
+#if OSL_DEBUG_LEVEL > 0
|
||||
if ( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR )
|
||||
{
|
||||
GError* error;
|
||||
@@ -575,7 +577,7 @@ awt::Size SAL_CALL Player::getPreferredPlayerWindowSize()
|
||||
DBG( "%p Player::getPreferredPlayerWindowSize, member %d x %d", this, mnWidth, mnHeight );
|
||||
|
||||
TimeValue aTimeout = { 10, 0 };
|
||||
-#if 1 // OSL_DEBUG_LEVEL > 2
|
||||
+#if OSL_DEBUG_LEVEL > 2
|
||||
osl::Condition::Result aResult =
|
||||
#endif
|
||||
maSizeCondition.wait( &aTimeout );
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 46b9892..0b60c3f 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -8971,7 +8971,7 @@ if test "$build_gstreamer_0_10" = "yes"; then
|
||||
if test "x$enable_gstreamer_0_10" != "xno"; then
|
||||
ENABLE_GSTREAMER_0_10="TRUE"
|
||||
AC_MSG_RESULT([yes])
|
||||
- PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 )
|
||||
+ PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 gstreamer-interfaces-0.10 )
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
--
|
||||
1.7.11.4
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,38 +0,0 @@
|
||||
From 300a14c4904a97cc217e56231cbcc7134ff036f3 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Meeks <michael.meeks@suse.com>
|
||||
Date: Mon, 13 Aug 2012 15:58:26 +0100
|
||||
Subject: [PATCH 4/7] tweak old-school gstreamer link line
|
||||
|
||||
Change-Id: If3f42a53ccfb4829009171c9b8325b2cb06277c2
|
||||
Signed-off-by: David Tardon <dtardon@redhat.com>
|
||||
---
|
||||
avmedia/Library_avmediagst_0_10.mk | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/avmedia/Library_avmediagst_0_10.mk b/avmedia/Library_avmediagst_0_10.mk
|
||||
index 9347c2b..5e4df70 100644
|
||||
--- a/avmedia/Library_avmediagst_0_10.mk
|
||||
+++ b/avmedia/Library_avmediagst_0_10.mk
|
||||
@@ -35,7 +35,6 @@ $(eval $(call gb_Library_set_include,avmediagst_0_10,\
|
||||
-I$(SRCDIR)/avmedia/source/inc \
|
||||
$(GSTREAMER_0_10_CFLAGS) \
|
||||
))
|
||||
-$(eval $(call gb_Library_add_libs,avmediagst_0_10,$(GSTREAMER_0_10_LIBS)))
|
||||
|
||||
$(eval $(call gb_Library_use_api,avmediagst_0_10,\
|
||||
offapi \
|
||||
@@ -58,6 +57,11 @@ $(eval $(call gb_Library_use_libraries,avmediagst_0_10,\
|
||||
$(gb_STDLIBS) \
|
||||
))
|
||||
|
||||
+$(eval $(call gb_Library_add_libs,avmediagst_0_10,\
|
||||
+ $(GSTREAMER_0_10_LIBS) \
|
||||
+ -lgstinterfaces-0.10 \
|
||||
+))
|
||||
+
|
||||
$(eval $(call gb_Library_add_exception_objects,avmediagst_0_10,\
|
||||
avmedia/source/gstreamer/gst_0_10 \
|
||||
))
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 9aa662f549625ae4dd4d9fe2f54a1943923b9774 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
|
||||
Date: Fri, 31 Aug 2012 16:00:01 +0200
|
||||
Subject: [PATCH 5/7] Don't fail configure with older
|
||||
gstreamer-plugins-base-0.10
|
||||
|
||||
Change-Id: Ia00293747d6041b86975f0e6539246310abfb957
|
||||
Signed-off-by: David Tardon <dtardon@redhat.com>
|
||||
---
|
||||
configure.in | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 0b60c3f..0351551 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -8971,7 +8971,9 @@ if test "$build_gstreamer_0_10" = "yes"; then
|
||||
if test "x$enable_gstreamer_0_10" != "xno"; then
|
||||
ENABLE_GSTREAMER_0_10="TRUE"
|
||||
AC_MSG_RESULT([yes])
|
||||
- PKG_CHECK_MODULES( GSTREAMER_0_10, gstreamer-0.10 gstreamer-plugins-base-0.10 gstreamer-interfaces-0.10 )
|
||||
+ PKG_CHECK_MODULES( [GSTREAMER_0_10], [gstreamer-0.10 gstreamer-plugins-base-0.10 gstreamer-interfaces-0.10],, [
|
||||
+ PKG_CHECK_MODULES( [GSTREAMER_0_10], [gstreamer-0.10 gstreamer-plugins-base-0.10] )
|
||||
+ ])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,137 +0,0 @@
|
||||
From d6297345b26d09d9f6caa25109a165c739e1f92b Mon Sep 17 00:00:00 2001
|
||||
From: Michael Meeks <michael.meeks@suse.com>
|
||||
Date: Tue, 18 Sep 2012 17:48:10 +0100
|
||||
Subject: [PATCH 6/7] gstreamer: various fixes for 1.0 and cleanups
|
||||
|
||||
always re-create the playbin after the fakeVideo pre-roll to avoid 1.0 issues.
|
||||
handle the GstVideoOverlay object being created before we get our XID.
|
||||
set force-aspect-ratio to allow user scaling un-conditionally
|
||||
|
||||
Conflicts:
|
||||
avmedia/source/gstreamer/gstplayer.cxx
|
||||
|
||||
Change-Id: I8892b8f7a125c0daa7101e28f274bff3de57ee08
|
||||
---
|
||||
avmedia/source/gstreamer/gstplayer.cxx | 46 ++++++++++++++++++++--------------
|
||||
1 file changed, 27 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
index 3654410..4bcca8e 100644
|
||||
--- a/avmedia/source/gstreamer/gstplayer.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
@@ -51,11 +51,11 @@
|
||||
#endif
|
||||
|
||||
#if !defined DBG
|
||||
-#if OSL_DEBUG_LEVEL > 2
|
||||
+# if OSL_DEBUG_LEVEL > 2
|
||||
#define DBG(...) do { fprintf (stderr, "%s", AVVERSION); fprintf (stderr, __VA_ARGS__); fprintf (stderr, "\n"); } while (0);
|
||||
-#else
|
||||
+# else
|
||||
#define DBG(...)
|
||||
-#endif
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
@@ -207,17 +207,20 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
|
||||
#ifdef AVMEDIA_GST_0_10
|
||||
if (message->structure &&
|
||||
- !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) && mnWindowID != 0 )
|
||||
+ !strcmp( gst_structure_get_name( message->structure ), "prepare-xwindow-id" ) )
|
||||
#else
|
||||
- if (gst_message_has_name (message, "prepare-window-handle") && mnWindowID != 0 )
|
||||
+ if (gst_is_video_overlay_prepare_window_handle_message (message) )
|
||||
#endif
|
||||
{
|
||||
- DBG( "%p processSyncMessage has handle: %s", this, GST_MESSAGE_TYPE_NAME( message ) );
|
||||
+ DBG( "%p processSyncMessage prepare window id: %s %d", this,
|
||||
+ GST_MESSAGE_TYPE_NAME( message ), (int)mnWindowId );
|
||||
if( mpXOverlay )
|
||||
g_object_unref( G_OBJECT ( mpXOverlay ) );
|
||||
+ g_object_set( GST_MESSAGE_SRC( message ), "force-aspect-ratio", FALSE, NULL );
|
||||
mpXOverlay = GST_VIDEO_OVERLAY( GST_MESSAGE_SRC( message ) );
|
||||
g_object_ref( G_OBJECT ( mpXOverlay ) );
|
||||
- gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
|
||||
+ if ( mnWindowID != 0 )
|
||||
+ gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
|
||||
return GST_BUS_DROP;
|
||||
}
|
||||
|
||||
@@ -301,7 +304,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
mnWidth = w;
|
||||
mnHeight = h;
|
||||
|
||||
- fprintf (stderr, "queried size: %d x %d", mnWidth, mnHeight );
|
||||
+ DBG( "queried size: %d x %d", mnWidth, mnHeight );
|
||||
|
||||
maSizeCondition.set();
|
||||
}
|
||||
@@ -310,7 +313,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
}
|
||||
#endif
|
||||
} else if( GST_MESSAGE_TYPE( message ) == GST_MESSAGE_ERROR ) {
|
||||
- fprintf (stderr, "Error !\n");
|
||||
+ DBG( "Error !\n" );
|
||||
if( mnWidth == 0 ) {
|
||||
// an error occurred, set condition so that OOo thread doesn't wait for us
|
||||
maSizeCondition.set();
|
||||
@@ -331,9 +334,9 @@ void Player::preparePlaybin( const ::rtl::OUString& rURL, bool bFakeVideo )
|
||||
}
|
||||
|
||||
mpPlaybin = gst_element_factory_make( "playbin", NULL );
|
||||
-
|
||||
- if( bFakeVideo )
|
||||
- g_object_set( G_OBJECT( mpPlaybin ), "video-sink", gst_element_factory_make( "fakesink", NULL ), NULL );
|
||||
+ if( bFakeVideo ) // used for getting prefered size etc.
|
||||
+ g_object_set( G_OBJECT( mpPlaybin ), "video-sink",
|
||||
+ gst_element_factory_make( "fakesink", NULL ), NULL );
|
||||
|
||||
mbFakeVideo = bFakeVideo;
|
||||
|
||||
@@ -343,7 +346,11 @@ void Player::preparePlaybin( const ::rtl::OUString& rURL, bool bFakeVideo )
|
||||
pBus = gst_element_get_bus( mpPlaybin );
|
||||
gst_bus_add_watch( pBus, pipeline_bus_callback, this );
|
||||
DBG( "%p set sync handler", this );
|
||||
+#ifdef AVMEDIA_GST_0_10
|
||||
gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this );
|
||||
+#else
|
||||
+ gst_bus_set_sync_handler( pBus, pipeline_bus_sync_handler, this, NULL );
|
||||
+#endif
|
||||
g_object_unref( pBus );
|
||||
}
|
||||
|
||||
@@ -582,13 +589,8 @@ awt::Size SAL_CALL Player::getPreferredPlayerWindowSize()
|
||||
#endif
|
||||
maSizeCondition.wait( &aTimeout );
|
||||
|
||||
- if( mbFakeVideo ) {
|
||||
- mbFakeVideo = sal_False;
|
||||
-
|
||||
- g_object_set( G_OBJECT( mpPlaybin ), "video-sink", NULL, NULL );
|
||||
- gst_element_set_state( mpPlaybin, GST_STATE_READY );
|
||||
- gst_element_set_state( mpPlaybin, GST_STATE_PAUSED );
|
||||
- }
|
||||
+ if( mbFakeVideo ) // ready ourselves for the real thing
|
||||
+ preparePlaybin( maURL, false );
|
||||
|
||||
DBG( "%p Player::getPreferredPlayerWindowSize after waitCondition %d, member %d x %d", this, aResult, mnWidth, mnHeight );
|
||||
|
||||
@@ -624,7 +626,13 @@ uno::Reference< ::media::XPlayerWindow > SAL_CALL Player::createPlayerWindow( co
|
||||
const SystemEnvData* pEnvData = pParentWindow ? pParentWindow->GetSystemData() : NULL;
|
||||
OSL_ASSERT(pEnvData);
|
||||
if (pEnvData)
|
||||
+ {
|
||||
mnWindowID = pEnvData->aWindow;
|
||||
+ DBG( "set window id to %d XOverlay %p\n", (int)mnWindowID, mpXOverlay);
|
||||
+ gst_element_set_state( mpPlaybin, GST_STATE_PAUSED );
|
||||
+ if ( mpXOverlay != NULL )
|
||||
+ gst_video_overlay_set_window_handle( mpXOverlay, mnWindowID );
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,45 +0,0 @@
|
||||
From 9a54dc0d4db8eab09c9eee01be09815276da3088 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Meeks <michael.meeks@suse.com>
|
||||
Date: Tue, 18 Sep 2012 17:29:31 +0100
|
||||
Subject: [PATCH 7/7] gstreamer: fix leaking pads.
|
||||
|
||||
Conflicts:
|
||||
avmedia/source/gstreamer/gstplayer.cxx
|
||||
|
||||
Change-Id: Ie0ffb62c4f75f8af9c2268c07dfabf14ba036115
|
||||
---
|
||||
avmedia/source/gstreamer/gstplayer.cxx | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
index 4bcca8e..448ea2d 100644
|
||||
--- a/avmedia/source/gstreamer/gstplayer.cxx
|
||||
+++ b/avmedia/source/gstreamer/gstplayer.cxx
|
||||
@@ -271,6 +271,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
gst_structure_get_int( pStructure, "height", &mnHeight );
|
||||
DBG( "queried size: %d x %d", mnWidth, mnHeight );
|
||||
}
|
||||
+ g_object_unref (pPad);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,7 +298,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
|
||||
caps = gst_pad_get_current_caps( pad );
|
||||
|
||||
- if( gst_structure_get( gst_caps_get_structure (caps, 0),
|
||||
+ if( gst_structure_get( gst_caps_get_structure( caps, 0 ),
|
||||
"width", G_TYPE_INT, &w,
|
||||
"height", G_TYPE_INT, &h,
|
||||
NULL ) ) {
|
||||
@@ -309,6 +310,7 @@ GstBusSyncReply Player::processSyncMessage( GstMessage *message )
|
||||
maSizeCondition.set();
|
||||
}
|
||||
gst_caps_unref( caps );
|
||||
+ g_object_unref( pad );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
--
|
||||
1.7.11.4
|
||||
|
Loading…
Reference in new issue