diff options
author | John Emmas <johne53@tiscali.co.uk> | 2013-08-04 19:03:32 +0100 |
---|---|---|
committer | John Emmas <johne53@tiscali.co.uk> | 2013-08-04 19:03:32 +0100 |
commit | 0dc8806ee473f96d1f480f7a50b7a39efaf6d90a (patch) | |
tree | 2b82ec97fb14c89fe1316561c950def46e5aa85d /libs/ardour/sndfilesource.cc | |
parent | d176cbc80476cdc8ca082631efc171ea39116d63 (diff) |
'libs/ardour' - Platform specific changes and includes
Diffstat (limited to 'libs/ardour/sndfilesource.cc')
-rw-r--r-- | libs/ardour/sndfilesource.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/libs/ardour/sndfilesource.cc b/libs/ardour/sndfilesource.cc index 2aae84085a..b5d821ffda 100644 --- a/libs/ardour/sndfilesource.cc +++ b/libs/ardour/sndfilesource.cc @@ -28,6 +28,9 @@ #include <sys/stat.h> +#ifdef PLATFORM_WINDOWS +#include <glibmm/convert.h> +#endif #include <glibmm/miscutils.h> #include "ardour/sndfilesource.h" @@ -182,22 +185,30 @@ SndFileSource::init_sndfile () int SndFileSource::open () { - _descriptor = new SndFileDescriptor (_path, writable(), &_info); + string path_to_open; + +#ifdef PLATFORM_WINDOWS + path_to_open = Glib::locale_from_utf8(_path); +#else + path_to_open = _path; +#endif + + _descriptor = new SndFileDescriptor (path_to_open.c_str(), writable(), &_info); _descriptor->Closed.connect_same_thread (file_manager_connection, boost::bind (&SndFileSource::file_closed, this)); SNDFILE* sf = _descriptor->allocate (); if (sf == 0) { - char errbuf[256]; + char errbuf[1024]; sf_error_str (0, errbuf, sizeof (errbuf) - 1); #ifndef HAVE_COREAUDIO /* if we have CoreAudio, we will be falling back to that if libsndfile fails, so we don't want to see this message. */ - cerr << "failed to open " << _path << " with name " << _name << endl; + cerr << "failed to open " << path_to_open << " with name " << _name << endl; error << string_compose(_("SndFileSource: cannot open file \"%1\" for %2 (%3)"), - _path, (writable() ? "read+write" : "reading"), errbuf) << endmsg; + path_to_open, (writable() ? "read+write" : "reading"), errbuf) << endmsg; #endif return -1; } @@ -251,7 +262,7 @@ SndFileSource::open () if (!_broadcast_info->write_to_file (sf)) { error << string_compose (_("cannot set broadcast info for audio file %1 (%2); dropping broadcast info for this file"), - _path, _broadcast_info->get_error()) + path_to_open, _broadcast_info->get_error()) << endmsg; _flags = Flag (_flags & ~Broadcast); delete _broadcast_info; |