mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-11 08:34:34 +02:00
Fix problems with reading files because of filename charsets.
This commit is contained in:
committed by
Leo Franchi
parent
b549ee24ac
commit
f386de0f0d
@@ -14,6 +14,10 @@ ELSE()
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
FIND_PACKAGE( Taglib 1.6.0 REQUIRED )
|
FIND_PACKAGE( Taglib 1.6.0 REQUIRED )
|
||||||
|
include(CheckTagLibFileName)
|
||||||
|
check_taglib_filename(COMPLEX_TAGLIB_FILENAME)
|
||||||
|
|
||||||
|
|
||||||
FIND_PACKAGE( LibLastFm REQUIRED )
|
FIND_PACKAGE( LibLastFm REQUIRED )
|
||||||
FIND_PACKAGE( LibEchonest REQUIRED )
|
FIND_PACKAGE( LibEchonest REQUIRED )
|
||||||
|
|
||||||
|
15
CMakeModules/CheckTagLibFileName.cmake
Normal file
15
CMakeModules/CheckTagLibFileName.cmake
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# taglib changed filenames to be a char/wchar struct on some platforms, need to check for it
|
||||||
|
macro (CHECK_TAGLIB_FILENAME TAGLIB_FILENAME_COMPLEX)
|
||||||
|
include (CheckCXXSourceCompiles)
|
||||||
|
set (CMAKE_REQUIRED_FLAGS ${TAGLIB_CFLAGS})
|
||||||
|
set (CMAKE_REQUIRED_INCLUDES ${TAGLIB_INCLUDES})
|
||||||
|
set (CMAKE_REQUIRED_LIBRARIES ${TAGLIB_LIBRARIES})
|
||||||
|
check_cxx_source_compiles(
|
||||||
|
"#include <tfile.h>
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
TagLib::FileName fileName1("char");
|
||||||
|
TagLib::FileName fileName2(L"wchar");
|
||||||
|
return 0;
|
||||||
|
}" ${TAGLIB_FILENAME_COMPLEX})
|
||||||
|
endmacro (CHECK_TAGLIB_FILENAME)
|
@@ -160,7 +160,14 @@ MusicScanner::readFile( const QFileInfo& fi )
|
|||||||
if( m_scanned % 100 == 0 )
|
if( m_scanned % 100 == 0 )
|
||||||
qDebug() << "SCAN" << m_scanned << fi.absoluteFilePath();
|
qDebug() << "SCAN" << m_scanned << fi.absoluteFilePath();
|
||||||
|
|
||||||
TagLib::FileRef f( fi.absoluteFilePath().toUtf8().constData() );
|
#ifdef COMPLEX_TAGLIB_FILENAME
|
||||||
|
const wchar_t *encodedName = reinterpret_cast< const wchar_t *>(fi.absoluteFilePath().utf16());
|
||||||
|
#else
|
||||||
|
QByteArray fileName = QFile::encodeName( fi.absoluteFilePath() );
|
||||||
|
const char *encodedName = fileName.constData();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
TagLib::FileRef f( encodedName );
|
||||||
if ( f.isNull() || !f.tag() )
|
if ( f.isNull() || !f.tag() )
|
||||||
{
|
{
|
||||||
// qDebug() << "Doesn't seem to be a valid audiofile:" << fi.absoluteFilePath();
|
// qDebug() << "Doesn't seem to be a valid audiofile:" << fi.absoluteFilePath();
|
||||||
|
Reference in New Issue
Block a user