forked from mia/Aegisub
Remove support for saving to memory with CSRI since there aren't actually any non-VSFilter renderers
This commit is contained in:
parent
2d646b447d
commit
6bd6ed5e5b
2 changed files with 6 additions and 24 deletions
|
@ -59,8 +59,7 @@
|
||||||
static std::mutex csri_mutex;
|
static std::mutex csri_mutex;
|
||||||
|
|
||||||
CSRISubtitlesProvider::CSRISubtitlesProvider(std::string type)
|
CSRISubtitlesProvider::CSRISubtitlesProvider(std::string type)
|
||||||
: can_open_mem(true)
|
: instance(nullptr, csri_close)
|
||||||
, instance(nullptr, csri_close)
|
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(csri_mutex);
|
std::lock_guard<std::mutex> lock(csri_mutex);
|
||||||
|
|
||||||
|
@ -73,9 +72,6 @@ CSRISubtitlesProvider::CSRISubtitlesProvider(std::string type)
|
||||||
|
|
||||||
if (!renderer)
|
if (!renderer)
|
||||||
throw agi::InternalError("CSRI renderer vanished between initial list and creation?", 0);
|
throw agi::InternalError("CSRI renderer vanished between initial list and creation?", 0);
|
||||||
|
|
||||||
std::string name(csri_renderer_info(renderer)->name);
|
|
||||||
can_open_mem = (name.find("vsfilter") == name.npos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CSRISubtitlesProvider::~CSRISubtitlesProvider() {
|
CSRISubtitlesProvider::~CSRISubtitlesProvider() {
|
||||||
|
@ -83,21 +79,12 @@ CSRISubtitlesProvider::~CSRISubtitlesProvider() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSRISubtitlesProvider::LoadSubtitles(AssFile *subs) {
|
void CSRISubtitlesProvider::LoadSubtitles(AssFile *subs) {
|
||||||
if (can_open_mem) {
|
if (tempfile.empty())
|
||||||
std::vector<char> data;
|
tempfile = unique_path(StandardPaths::DecodePath("?temp/csri-%%%%-%%%%-%%%%-%%%%.ass"));
|
||||||
subs->SaveMemory(data);
|
subs->Save(tempfile, false, false, "utf-8");
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lock(csri_mutex);
|
std::lock_guard<std::mutex> lock(csri_mutex);
|
||||||
instance = csri_open_mem(renderer, &data[0], data.size(), nullptr);
|
instance = csri_open_file(renderer, tempfile.string().c_str(), nullptr);
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (tempfile.empty())
|
|
||||||
tempfile = unique_path(StandardPaths::DecodePath("?temp/csri-%%%%-%%%%-%%%%-%%%%.ass"));
|
|
||||||
subs->Save(tempfile, false, false, "utf-8");
|
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lock(csri_mutex);
|
|
||||||
instance = csri_open_file(renderer, tempfile.string().c_str(), nullptr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSRISubtitlesProvider::DrawSubtitles(AegiVideoFrame &dst,double time) {
|
void CSRISubtitlesProvider::DrawSubtitles(AegiVideoFrame &dst,double time) {
|
||||||
|
|
|
@ -49,11 +49,6 @@ class CSRISubtitlesProvider : public SubtitlesProvider {
|
||||||
agi::scoped_holder<csri_inst*> instance;
|
agi::scoped_holder<csri_inst*> instance;
|
||||||
csri_rend *renderer;
|
csri_rend *renderer;
|
||||||
|
|
||||||
/// VSFilter's implementation of csri_open_mem writes the file to disk then
|
|
||||||
/// opens it with the standard file reader, and by writing the file ourselves
|
|
||||||
/// we can skip a few pointless charset conversions
|
|
||||||
bool can_open_mem;
|
|
||||||
|
|
||||||
/// Name of the file passed to renderers with can_open_mem false
|
/// Name of the file passed to renderers with can_open_mem false
|
||||||
agi::fs::path tempfile;
|
agi::fs::path tempfile;
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in a new issue