[vlc-devel] [PATCH v2] freetype: link directly to dwrite in win32
Jean-Baptiste Kempf
jb at videolan.org
Wed Jun 10 14:12:42 CEST 2020
OK.
remember that DWrite2 is 8.1+
Best,
On Wed, Jun 10, 2020, at 14:01, Steve Lhomme wrote:
> Since we target Windows 7 we know the DLL is always there.
>
> That's how the Winstore mode was already working.
> ---
> modules/text_renderer/Makefile.am | 5 +--
> .../text_renderer/freetype/fonts/dwrite.cpp | 41 +------------------
> 2 files changed, 4 insertions(+), 42 deletions(-)
>
> diff --git a/modules/text_renderer/Makefile.am
> b/modules/text_renderer/Makefile.am
> index d3cdf754aaaa..56cc82a1ab05 100644
> --- a/modules/text_renderer/Makefile.am
> +++ b/modules/text_renderer/Makefile.am
> @@ -14,12 +14,11 @@ libfreetype_plugin_la_LDFLAGS = $(FREETYPE_LDFLAGS)
> -rpath '$(textdir)'
>
> if HAVE_WIN32
> libfreetype_plugin_la_SOURCES +=
> text_renderer/freetype/fonts/dwrite.cpp
> +libfreetype_plugin_la_LIBADD += -ldwrite -luuid
> libfreetype_plugin_la_LINK = $(CXXLINK)
> if HAVE_WIN32_DESKTOP
> libfreetype_plugin_la_SOURCES += text_renderer/freetype/fonts/win32.c
> -libfreetype_plugin_la_LIBADD += -liconv -lz -lusp10 -lgdi32 -luuid
> -else
> -libfreetype_plugin_la_LIBADD += -ldwrite -luuid
> +libfreetype_plugin_la_LIBADD += -liconv -lz -lusp10 -lgdi32
> endif
> else
> libfreetype_plugin_la_LINK = $(LINK)
> diff --git a/modules/text_renderer/freetype/fonts/dwrite.cpp
> b/modules/text_renderer/freetype/fonts/dwrite.cpp
> index 943c60f3a257..8a5f8392674e 100644
> --- a/modules/text_renderer/freetype/fonts/dwrite.cpp
> +++ b/modules/text_renderer/freetype/fonts/dwrite.cpp
> @@ -46,31 +46,18 @@ typedef HRESULT ( WINAPI *DWriteCreateFactoryProc )
> (
>
> struct dw_sys_t
> {
> - HMODULE p_dw_dll;
> ComPtr< IDWriteFactory2 > p_dw_factory;
> ComPtr< IDWriteFontCollection > p_dw_system_fonts;
> ComPtr< IDWriteNumberSubstitution > p_dw_substitution;
> ComPtr< IDWriteFontFallback > p_dw_fallbacks;
> vector< FT_Stream > streams;
>
> - dw_sys_t( HMODULE p_dw_dll ) : p_dw_dll( p_dw_dll )
> + dw_sys_t( )
> {
> /* This will fail on versions of Windows prior to 8.1 */
> -#if VLC_WINSTORE_APP
> if( DWriteCreateFactory( DWRITE_FACTORY_TYPE_SHARED, __uuidof(
> IDWriteFactory2 ),
> reinterpret_cast<IUnknown **>(
> p_dw_factory.GetAddressOf() ) ) )
> throw runtime_error( "failed to create DWrite factory" );
> -#else
> - DWriteCreateFactoryProc pf =
> - ( DWriteCreateFactoryProc ) GetProcAddress( p_dw_dll,
> "DWriteCreateFactory" );
> -
> - if( pf == NULL )
> - throw runtime_error( "GetProcAddress() failed" );
> -
> - if( pf( DWRITE_FACTORY_TYPE_SHARED, __uuidof( IDWriteFactory2
> ),
> - reinterpret_cast<IUnknown **>(
> p_dw_factory.GetAddressOf() ) ) )
> - throw runtime_error( "failed to create DWrite factory" );
> -#endif
>
> if( p_dw_factory->GetSystemFontCollection(
> p_dw_system_fonts.GetAddressOf() ) )
> throw runtime_error( "GetSystemFontCollection() failed" );
> @@ -106,29 +93,14 @@ static inline void AppendFamily( vlc_family_t
> **pp_list, vlc_family_t *p_family
> extern "C" int InitDWrite( filter_t *p_filter )
> {
> dw_sys_t *p_dw_sys;
> - HMODULE p_dw_dll = NULL;
>
> try
> {
> -#if VLC_WINSTORE_APP
> - p_dw_sys = new dw_sys_t( p_dw_dll );
> -#else
> - p_dw_dll = LoadLibrary( TEXT( "Dwrite.dll" ) );
> - if( p_dw_dll == NULL )
> - return VLC_EGENERIC;
> -
> - p_dw_sys = new dw_sys_t( p_dw_dll );
> -#endif
> + p_dw_sys = new dw_sys_t( );
> }
> catch( const exception &e )
> {
> -#if !VLC_WINSTORE_APP
> - FreeLibrary( p_dw_dll );
> - (void)e;
> -#else
> msg_Err( p_filter, "InitDWrite(): %s", e.what() );
> -#endif
> -
> return VLC_EGENERIC;
> }
>
> @@ -143,16 +115,7 @@ extern "C" int ReleaseDWrite( filter_t *p_filter )
> filter_sys_t *p_sys = reinterpret_cast<filter_sys_t *>( p_filter->p_sys );
> dw_sys_t *p_dw_sys = ( dw_sys_t * ) p_sys->p_dw_sys;
>
> -#if VLC_WINSTORE_APP
> delete p_dw_sys;
> -#else
> - HMODULE p_dw_dll = NULL;
> - if( p_dw_sys && p_dw_sys->p_dw_dll )
> - p_dw_dll = p_dw_sys->p_dw_dll;
> -
> - delete p_dw_sys;
> - if( p_dw_dll ) FreeLibrary( p_dw_dll );
> -#endif
>
> return VLC_SUCCESS;
> }
> --
> 2.26.2
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
--
Jean-Baptiste Kempf - President
+33 672 704 734
More information about the vlc-devel
mailing list