X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=android%2Fassetreader.cpp;h=d0af1678ed137ebf5c0303ff8c36e177ea279320;hp=bf76704a8b873f724f526ab773e62c4a46562f7b;hb=6f925ba9d6faf1077b73c5a5808259576081716a;hpb=dddff2e7c658aa84f67186ade0a4845b5fb0b43f diff --git a/android/assetreader.cpp b/android/assetreader.cpp index bf76704a..d0af1678 100644 --- a/android/assetreader.cpp +++ b/android/assetreader.cpp @@ -22,17 +22,25 @@ #include #include #include +#include using namespace pv; +using std::string; +using std::unique_ptr; + AndroidAssetReader::~AndroidAssetReader() {} -void AndroidAssetReader::open(struct sr_resource *res, std::string name) +void AndroidAssetReader::open(struct sr_resource *res, string name) { if (res->type == SR_RESOURCE_FIRMWARE) { - const auto path = QString::fromStdString("assets:/sigrok-firmware/" + name); - std::unique_ptr file {new QFile{path}}; + auto path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, + QString::fromStdString("sigrok-firmware/" + name)); + if (path.isEmpty()) + path = QString::fromStdString("assets:/sigrok-firmware/" + name); + + unique_ptr file {new QFile{path}}; if (!file->open(QIODevice::ReadOnly)) throw sigrok::Error{SR_ERR}; @@ -55,7 +63,7 @@ void AndroidAssetReader::close(struct sr_resource *res) qCritical("AndroidAssetReader: Invalid handle"); throw sigrok::Error{SR_ERR_ARG}; } - const std::unique_ptr file {static_cast(res->handle)}; + const unique_ptr file {static_cast(res->handle)}; res->handle = nullptr; file->close();