[vlc-commits] modules: use WCHAR when calling wide char Win32 APIs
Steve Lhomme
git at videolan.org
Wed Apr 3 10:45:17 CEST 2019
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Wed Apr 3 08:54:04 2019 +0200| [2f7271eaff83c6388ac0f629e44eb93b1e2da07e] | committer: Steve Lhomme
modules: use WCHAR when calling wide char Win32 APIs
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2f7271eaff83c6388ac0f629e44eb93b1e2da07e
---
modules/control/ntservice.c | 4 +--
modules/gui/eject.c | 4 +--
modules/gui/skins2/win32/win32_factory.cpp | 2 +-
modules/services_discovery/windrive.c | 4 +--
modules/text_renderer/freetype/fonts/win32.c | 44 ++++++++++++----------------
modules/video_chroma/d3d11_fmt.c | 20 ++++++-------
src/input/es_out_timeshift.c | 4 +--
src/win32/dirs.c | 8 ++---
src/win32/filesystem.c | 4 +--
9 files changed, 44 insertions(+), 50 deletions(-)
diff --git a/modules/control/ntservice.c b/modules/control/ntservice.c
index d61b73ad4f..17c66bb771 100644
--- a/modules/control/ntservice.c
+++ b/modules/control/ntservice.c
@@ -182,7 +182,7 @@ static int NTServiceInstall( intf_thread_t *p_intf )
intf_sys_t *p_sys = p_intf->p_sys;
char *psz_extra;
struct vlc_memstream path_stream;
- TCHAR psz_pathtmp[MAX_PATH];
+ WCHAR psz_pathtmp[MAX_PATH];
SC_HANDLE handle = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
if( handle == NULL )
@@ -201,7 +201,7 @@ static int NTServiceInstall( intf_thread_t *p_intf )
/* Find out the filename of ourselves so we can install it to the
* service control manager */
GetModuleFileName( NULL, psz_pathtmp, MAX_PATH );
- psz_extra = FromT( psz_pathtmp );
+ psz_extra = FromWide( psz_pathtmp );
if ( !psz_extra )
{
CloseServiceHandle( handle );
diff --git a/modules/gui/eject.c b/modules/gui/eject.c
index c60952ac2d..1f32cafc06 100644
--- a/modules/gui/eject.c
+++ b/modules/gui/eject.c
@@ -126,12 +126,12 @@ static int intf_Eject( vlc_object_t *p_this, const char *psz_device )
#if defined(_WIN32)
MCI_OPEN_PARMS op;
DWORD i_flags;
- TCHAR psz_drive[4];
+ WCHAR psz_drive[4];
memset( &op, 0, sizeof(MCI_OPEN_PARMS) );
op.lpstrDeviceType = (LPCTSTR)MCI_DEVTYPE_CD_AUDIO;
- _tcscpy( psz_drive, TEXT("X:") );
+ wcscpy( psz_drive, TEXT("X:") );
psz_drive[0] = psz_device[0];
op.lpstrElementName = psz_drive;
diff --git a/modules/gui/skins2/win32/win32_factory.cpp b/modules/gui/skins2/win32/win32_factory.cpp
index 12be516305..3a470c5472 100644
--- a/modules/gui/skins2/win32/win32_factory.cpp
+++ b/modules/gui/skins2/win32/win32_factory.cpp
@@ -214,7 +214,7 @@ bool Win32Factory::init()
m_trayIcon.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE;
m_trayIcon.uCallbackMessage = MY_WM_TRAYACTION;
m_trayIcon.hIcon = LoadIcon( m_hInst, vlc_icon );
- _tcscpy( m_trayIcon.szTip, vlc_name );
+ wcscpy( m_trayIcon.szTip, vlc_name );
// Show the systray icon if needed
if( var_InheritBool( getIntf(), "skins2-systray" ) )
diff --git a/modules/services_discovery/windrive.c b/modules/services_discovery/windrive.c
index b0d2b0f83c..5fcde88a50 100644
--- a/modules/services_discovery/windrive.c
+++ b/modules/services_discovery/windrive.c
@@ -60,12 +60,12 @@ static int Open (vlc_object_t *obj)
LONG drives = GetLogicalDrives ();
char mrl[12] = "file:///A:/", name[3] = "A:";
- TCHAR path[4] = TEXT("A:\\");
+ WCHAR path[4] = TEXT("A:\\");
for (char d = 0; d < 26; d++)
{
input_item_t *item;
- char letter = 'A' + d;
+ WCHAR letter = 'A' + d;
/* Does this drive actually exist? */
if (!(drives & (1 << d)))
diff --git a/modules/text_renderer/freetype/fonts/win32.c b/modules/text_renderer/freetype/fonts/win32.c
index 4e16ae2454..23d3c4770d 100644
--- a/modules/text_renderer/freetype/fonts/win32.c
+++ b/modules/text_renderer/freetype/fonts/win32.c
@@ -50,14 +50,14 @@
# include <windows.h>
# include <shlobj.h>
# include <usp10.h>
-# include <vlc_charset.h> /* FromT */
+# include <vlc_charset.h>
# undef HAVE_FONTCONFIG
#endif
#include "../platform_fonts.h"
#if !VLC_WINSTORE_APP
-#define FONT_DIR_NT _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts")
+#define FONT_DIR_NT TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts")
static inline void AppendFamily( vlc_family_t **pp_list, vlc_family_t *p_family )
{
@@ -115,17 +115,17 @@ static int ConcatenatedIndex( char *psz_haystack, const char *psz_needle )
return -1;
}
-static int GetFileFontByName( LPCTSTR font_name, char **psz_filename, int *i_index )
+static int GetFileFontByName( const WCHAR * font_name, char **psz_filename, int *i_index )
{
HKEY hKey;
- TCHAR vbuffer[MAX_PATH];
- TCHAR dbuffer[256];
+ WCHAR vbuffer[MAX_PATH];
+ WCHAR dbuffer[256];
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, FONT_DIR_NT, 0, KEY_READ, &hKey)
!= ERROR_SUCCESS )
return 1;
- char *font_name_temp = FromT( font_name );
+ char *font_name_temp = FromWide( font_name );
for( int index = 0;; index++ )
{
@@ -141,7 +141,7 @@ static int GetFileFontByName( LPCTSTR font_name, char **psz_filename, int *i_ind
return i_result;
}
- char *psz_value = FromT( vbuffer );
+ char *psz_value = FromWide( vbuffer );
char *s = strchr( psz_value,'(' );
if( s != NULL && s != psz_value ) s[-1] = '\0';
@@ -150,7 +150,7 @@ static int GetFileFontByName( LPCTSTR font_name, char **psz_filename, int *i_ind
if( ( i_concat_idx = ConcatenatedIndex( psz_value, font_name_temp ) ) != -1 )
{
*i_index = i_concat_idx;
- *psz_filename = FromT( dbuffer );
+ *psz_filename = FromWide( dbuffer );
free( psz_value );
break;
}
@@ -169,7 +169,7 @@ static char* GetWindowsFontPath()
if( S_OK != SHGetFolderPathW( NULL, CSIDL_FONTS, NULL, SHGFP_TYPE_CURRENT, wdir ) )
{
GetWindowsDirectoryW( wdir, MAX_PATH );
- wcscat( wdir, L"\\fonts" );
+ wcscat( wdir, TEXT("\\fonts") );
}
return FromWide( wdir );
}
@@ -260,13 +260,13 @@ static int GetSfntNameString( FT_Byte *p_table, FT_UInt i_size, FT_UShort i_plat
* We have to get the English name because that's what the Windows registry uses
* for name to file mapping.
*/
-static TCHAR *GetFullEnglishName( const ENUMLOGFONTEX *lpelfe )
+static WCHAR *GetFullEnglishName( const ENUMLOGFONTEX *lpelfe )
{
HFONT hFont = NULL;
HDC hDc = NULL;
FT_Byte *p_table = NULL;
- TCHAR *psz_result = NULL;
+ WCHAR *psz_result = NULL;
hFont = CreateFontIndirect( &lpelfe->elfLogFont );
@@ -318,12 +318,7 @@ static TCHAR *GetFullEnglishName( const ENUMLOGFONTEX *lpelfe )
psz_name[ i ] = U16_AT( p_name + i * 2 );
psz_name[ i_length_in_wchars ] = 0;
-#ifdef UNICODE
psz_result = psz_name;
-#else
- psz_result = FromWide( psz_name );
- free( psz_name );
-#endif
done:
free( p_table );
@@ -358,9 +353,9 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *lpelfe, const NEWTEXTM
char *psz_fontfile = NULL;
int i_index = 0;
- if( GetFileFontByName( (LPCTSTR)lpelfe->elfFullName, &psz_filename, &i_index ) )
+ if( GetFileFontByName( lpelfe->elfFullName, &psz_filename, &i_index ) )
{
- TCHAR *psz_english_name = GetFullEnglishName( lpelfe );
+ WCHAR *psz_english_name = GetFullEnglishName( lpelfe );
if( !psz_english_name )
return 1;
@@ -420,8 +415,8 @@ const vlc_family_t *Win32_GetFamily( filter_t *p_filter, const char *psz_family
LOGFONT lf;
lf.lfCharSet = DEFAULT_CHARSET;
- LPTSTR psz_fbuffer = ToT( psz_family );
- _tcsncpy( (LPTSTR)&lf.lfFaceName, psz_fbuffer, LF_FACESIZE );
+ LPTSTR psz_fbuffer = ToWide( psz_family );
+ wcsncpy( (LPTSTR)&lf.lfFaceName, psz_fbuffer, LF_FACESIZE );
free( psz_fbuffer );
/* */
@@ -459,7 +454,6 @@ static char *UniscribeFallback( const char *psz_family, uni_char_t codepoint )
HDC hdc = NULL;
HDC meta_file_dc = NULL;
HENHMETAFILE meta_file = NULL;
- LPTSTR psz_fbuffer = NULL;
char *psz_result = NULL;
hdc = CreateCompatibleDC( NULL );
@@ -473,10 +467,10 @@ static char *UniscribeFallback( const char *psz_family, uni_char_t codepoint )
LOGFONT lf;
memset( &lf, 0, sizeof( lf ) );
- psz_fbuffer = ToT( psz_family );
+ wchar_t *psz_fbuffer = ToWide( psz_family );
if( !psz_fbuffer )
goto error;
- _tcsncpy( ( LPTSTR ) &lf.lfFaceName, psz_fbuffer, LF_FACESIZE );
+ wcsncpy( ( LPTSTR ) &lf.lfFaceName, psz_fbuffer, LF_FACESIZE );
free( psz_fbuffer );
lf.lfCharSet = DEFAULT_CHARSET;
@@ -486,7 +480,7 @@ static char *UniscribeFallback( const char *psz_family, uni_char_t codepoint )
HFONT hOriginalFont = SelectObject( meta_file_dc, hFont );
- TCHAR text = codepoint;
+ WCHAR text = codepoint;
SCRIPT_STRING_ANALYSIS script_analysis;
HRESULT hresult = ScriptStringAnalyse( meta_file_dc, &text, 1, 0, -1,
@@ -509,7 +503,7 @@ static char *UniscribeFallback( const char *psz_family, uni_char_t codepoint )
log_font.lfFaceName[ 0 ] = 0;
EnumEnhMetaFile( 0, meta_file, MetaFileEnumProc, &log_font, NULL );
if( log_font.lfFaceName[ 0 ] )
- psz_result = FromT( log_font.lfFaceName );
+ psz_result = FromWide( log_font.lfFaceName );
}
DeleteEnhMetaFile(meta_file);
diff --git a/modules/video_chroma/d3d11_fmt.c b/modules/video_chroma/d3d11_fmt.c
index dc0ea96c89..96e8ec4c00 100644
--- a/modules/video_chroma/d3d11_fmt.c
+++ b/modules/video_chroma/d3d11_fmt.c
@@ -137,15 +137,15 @@ int D3D11_AllocateResourceView(vlc_object_t *obj, ID3D11Device *d3ddevice,
static HKEY GetAdapterRegistry(vlc_object_t *obj, DXGI_ADAPTER_DESC *adapterDesc)
{
HKEY hKey;
- TCHAR key[128];
- TCHAR szData[256], lookup[256];
+ WCHAR key[128];
+ WCHAR szData[256], lookup[256];
DWORD len = 256;
LSTATUS ret;
- _sntprintf(lookup, 256, TEXT("pci\\ven_%04x&dev_%04x"), adapterDesc->VendorId, adapterDesc->DeviceId);
+ _snwprintf(lookup, 256, TEXT("pci\\ven_%04x&dev_%04x"), adapterDesc->VendorId, adapterDesc->DeviceId);
for (int i=0;;i++)
{
- _sntprintf(key, 128, TEXT("SYSTEM\\CurrentControlSet\\Control\\Class\\{4d36e968-e325-11ce-bfc1-08002be10318}\\%04d"), i);
+ _snwprintf(key, 128, TEXT("SYSTEM\\CurrentControlSet\\Control\\Class\\{4d36e968-e325-11ce-bfc1-08002be10318}\\%04d"), i);
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ, &hKey);
if ( ret != ERROR_SUCCESS )
{
@@ -156,7 +156,7 @@ static HKEY GetAdapterRegistry(vlc_object_t *obj, DXGI_ADAPTER_DESC *adapterDesc
len = sizeof(szData);
ret = RegQueryValueEx( hKey, TEXT("MatchingDeviceId"), NULL, NULL, (LPBYTE) &szData, &len );
if ( ret == ERROR_SUCCESS ) {
- if (_tcsncmp(lookup, szData, _tcslen(lookup)) == 0)
+ if (wcsncmp(lookup, szData, wcslen(lookup)) == 0)
return hKey;
msg_Dbg(obj, "different %d device %s vs %s", i, lookup, szData);
}
@@ -189,8 +189,8 @@ void D3D11_GetDriverVersion(vlc_object_t *obj, d3d11_device_t *d3d_dev)
}
LONG err = ERROR_ACCESS_DENIED;
- TCHAR szData[256];
- DWORD len = 256;
+ WCHAR szData[256];
+ DWORD len = sizeof(szData);
HKEY hKey = GetAdapterRegistry(obj, &adapterDesc);
if (hKey == NULL)
{
@@ -209,7 +209,7 @@ void D3D11_GetDriverVersion(vlc_object_t *obj, d3d11_device_t *d3d_dev)
int wddm, d3d_features, revision, build;
/* see https://docs.microsoft.com/en-us/windows-hardware/drivers/display/wddm-2-1-features#driver-versioning */
- if (_stscanf(szData, TEXT("%d.%d.%d.%d"), &wddm, &d3d_features, &revision, &build) != 4)
+ if (swscanf(szData, TEXT("%d.%d.%d.%d"), &wddm, &d3d_features, &revision, &build) != 4)
{
msg_Warn(obj, "the adapter DriverVersion '%ls' doesn't match the expected format", szData);
return;
@@ -699,8 +699,8 @@ static HINSTANCE Direct3D11LoadShaderLibrary(void)
HINSTANCE instance = NULL;
/* d3dcompiler_47 is the latest on windows 8.1 */
for (int i = 47; i > 41; --i) {
- TCHAR filename[19];
- _sntprintf(filename, 19, TEXT("D3DCOMPILER_%d.dll"), i);
+ WCHAR filename[19];
+ _snwprintf(filename, 19, TEXT("D3DCOMPILER_%d.dll"), i);
instance = LoadLibrary(filename);
if (instance) break;
}
diff --git a/src/input/es_out_timeshift.c b/src/input/es_out_timeshift.c
index ee51662b3f..406c6f2237 100644
--- a/src/input/es_out_timeshift.c
+++ b/src/input/es_out_timeshift.c
@@ -337,12 +337,12 @@ es_out_t *input_EsOutTimeshiftNew( input_thread_t *p_input, es_out_t *p_next_out
const DWORD count = GetTempPath( 0, NULL );
if( count > 0 )
{
- TCHAR *path = vlc_alloc( count + 1, sizeof(TCHAR) );
+ WCHAR *path = vlc_alloc( count + 1, sizeof(WCHAR) );
if( path != NULL )
{
DWORD ret = GetTempPath( count + 1, path );
if( ret != 0 && ret <= count )
- p_sys->psz_tmp_path = FromT( path );
+ p_sys->psz_tmp_path = FromWide( path );
free( path );
}
}
diff --git a/src/win32/dirs.c b/src/win32/dirs.c
index bfec6411c8..a9c0d68022 100644
--- a/src/win32/dirs.c
+++ b/src/win32/dirs.c
@@ -258,17 +258,17 @@ static char *config_GetAppDir (void)
{
#if !VLC_WINSTORE_APP
/* if portable directory exists, use it */
- TCHAR path[MAX_PATH];
+ WCHAR path[MAX_PATH];
if (GetModuleFileName (NULL, path, MAX_PATH))
{
- TCHAR *lastDir = _tcsrchr (path, '\\');
+ WCHAR *lastDir = wcsrchr (path, TEXT('\\'));
if (lastDir)
{
- _tcscpy (lastDir + 1, TEXT("portable"));
+ wcscpy (lastDir + 1, TEXT("portable"));
DWORD attrib = GetFileAttributes (path);
if (attrib != INVALID_FILE_ATTRIBUTES &&
(attrib & FILE_ATTRIBUTE_DIRECTORY))
- return FromT (path);
+ return FromWide (path);
}
}
#endif
diff --git a/src/win32/filesystem.c b/src/win32/filesystem.c
index ab5ed0b26f..74980c68ef 100644
--- a/src/win32/filesystem.c
+++ b/src/win32/filesystem.c
@@ -355,12 +355,12 @@ int vlc_accept (int lfd, struct sockaddr *addr, socklen_t *alen, bool nonblock)
#if !VLC_WINSTORE_APP
FILE *vlc_win32_tmpfile(void)
{
- TCHAR tmp_path[MAX_PATH-14];
+ WCHAR tmp_path[MAX_PATH-14];
int i_ret = GetTempPath (MAX_PATH-14, tmp_path);
if (i_ret == 0)
return NULL;
- TCHAR tmp_name[MAX_PATH];
+ WCHAR tmp_name[MAX_PATH];
i_ret = GetTempFileName(tmp_path, TEXT("VLC"), 0, tmp_name);
if (i_ret == 0)
return NULL;
More information about the vlc-commits
mailing list