From 5740946c7c833b7bc2bc1b5bc487a4446cd0c553 Mon Sep 17 00:00:00 2001 From: dreamsourcelabTAI Date: Thu, 25 Nov 2021 10:50:39 +0800 Subject: [PATCH] fix resource dir not find bug --- DSView/main.cpp | 5 +---- DSView/pv/appcontrol.cpp | 3 +++ DSView/pv/config/appconfig.cpp | 7 ++++++- DSView/pv/devicemanager.h | 4 +--- DSView/pv/mainwindow.cpp | 1 - DSView/pv/toolbars/logobar.cpp | 1 - DSView/pv/toolbars/samplingbar.cpp | 1 - libsigrok4DSL/libsigrok-internal.h | 6 ++++++ libsigrok4DSL/libsigrok.h | 2 -- libsigrok4DSL/proto.h | 2 ++ libsigrok4DSL/session.c | 15 +++++++++++++++ qtpro/DSView.pro | 4 ---- qtpro/DSView.pro.user | 2 +- 13 files changed, 35 insertions(+), 18 deletions(-) diff --git a/DSView/main.cpp b/DSView/main.cpp index 978f37b2..8485be26 100755 --- a/DSView/main.cpp +++ b/DSView/main.cpp @@ -51,7 +51,6 @@ void usage() "\n", DS_BIN_NAME, DS_DESCRIPTION); } -char DS_RES_PATH[256] = {0}; int main(int argc, char *argv[]) { @@ -146,9 +145,7 @@ int main(int argc, char *argv[]) open_file = argvFinal[argcFinal - 1]; } - QString path = GetAppDataDir(); - strcpy(DS_RES_PATH, path.toUtf8().data()); - + //#ifdef Q_OS_DARWIN //#endif diff --git a/DSView/pv/appcontrol.cpp b/DSView/pv/appcontrol.cpp index 34fb8f99..52275e88 100644 --- a/DSView/pv/appcontrol.cpp +++ b/DSView/pv/appcontrol.cpp @@ -73,6 +73,9 @@ bool AppControl::Init() m_error = "DSView run ERROR: libsigrok init failed."; return false; } + + QString resdir = GetResourceDir(); + sr_set_firmware_resource_dir(resdir.toUtf8()); QString dir = GetAppDataDir() + "/decoders"; char path[256] = {0}; diff --git a/DSView/pv/config/appconfig.cpp b/DSView/pv/config/appconfig.cpp index 50aeb5cb..920300fe 100644 --- a/DSView/pv/config/appconfig.cpp +++ b/DSView/pv/config/appconfig.cpp @@ -307,5 +307,10 @@ QString GetAppDataDir() } QString GetResourceDir(){ - return GetAppDataDir() + "/res"; + QDir dir = GetAppDataDir() + "/res"; + if (dir.exists()){ + return dir.absolutePath(); + } + qDebug() << "dir is not exists:" << dir.absolutePath(); + assert(false); } diff --git a/DSView/pv/devicemanager.h b/DSView/pv/devicemanager.h index 79f3502d..c8b85b63 100755 --- a/DSView/pv/devicemanager.h +++ b/DSView/pv/devicemanager.h @@ -35,9 +35,7 @@ struct sr_context; struct sr_dev_driver; struct sr_dev_inst; -struct libusbhp_t; -struct libusbhp_device_t; - + namespace pv { class SigSession; diff --git a/DSView/pv/mainwindow.cpp b/DSView/pv/mainwindow.cpp index cfd76a37..61979413 100644 --- a/DSView/pv/mainwindow.cpp +++ b/DSView/pv/mainwindow.cpp @@ -86,7 +86,6 @@ #include #include #include -#include #include "ui/msgbox.h" #include "config/appconfig.h" #include "appcontrol.h" diff --git a/DSView/pv/toolbars/logobar.cpp b/DSView/pv/toolbars/logobar.cpp index c08d2bc1..3914d9f0 100755 --- a/DSView/pv/toolbars/logobar.cpp +++ b/DSView/pv/toolbars/logobar.cpp @@ -200,7 +200,6 @@ void LogoBar::on_actionManual_triggered() void LogoBar::on_actionIssue_triggered() { - QDir dir(GetAppDataDir()); QDesktopServices::openUrl(QUrl(QLatin1String("https://github.com/DreamSourceLab/DSView/issues"))); } diff --git a/DSView/pv/toolbars/samplingbar.cpp b/DSView/pv/toolbars/samplingbar.cpp index 7281bde6..753eeb92 100755 --- a/DSView/pv/toolbars/samplingbar.cpp +++ b/DSView/pv/toolbars/samplingbar.cpp @@ -23,7 +23,6 @@ #include "../extdef.h" #include -#include #include #include #include diff --git a/libsigrok4DSL/libsigrok-internal.h b/libsigrok4DSL/libsigrok-internal.h index de86db20..9eb3f5fc 100755 --- a/libsigrok4DSL/libsigrok-internal.h +++ b/libsigrok4DSL/libsigrok-internal.h @@ -27,6 +27,9 @@ #include #endif +// firmware binary file directory, endswith letter '/' +extern char DS_RES_PATH[256]; + /** * @file * @@ -119,6 +122,9 @@ SR_PRIV int sr_session_send(const struct sr_dev_inst *sdi, const struct sr_datafeed_packet *packet); SR_PRIV int sr_session_stop_sync(void); +SR_PRIV int usb_hotplug_callback(struct libusb_context *ctx, struct libusb_device *dev, + libusb_hotplug_event event, void *user_data); + /*--- std.c -----------------------------------------------------------------*/ typedef int (*dev_close_t)(struct sr_dev_inst *sdi); diff --git a/libsigrok4DSL/libsigrok.h b/libsigrok4DSL/libsigrok.h index d36dffcf..9ca4936b 100755 --- a/libsigrok4DSL/libsigrok.h +++ b/libsigrok4DSL/libsigrok.h @@ -134,8 +134,6 @@ enum { #define MAX_TIMEBASE SR_SEC(10) #define MIN_TIMEBASE SR_NS(10) -extern char DS_RES_PATH[256]; - /** libsigrok loglevels. */ enum { SR_LOG_NONE = 0, /**< Output no messages at all. */ diff --git a/libsigrok4DSL/proto.h b/libsigrok4DSL/proto.h index 81452c3a..0ebd0d26 100755 --- a/libsigrok4DSL/proto.h +++ b/libsigrok4DSL/proto.h @@ -186,5 +186,7 @@ SR_API void sr_set_export_original_data(int flag); SR_API int sr_get_export_original_flag(); +SR_API void sr_set_firmware_resource_dir(const char *dir); + #endif diff --git a/libsigrok4DSL/session.c b/libsigrok4DSL/session.c index ce46fcb9..ba857999 100755 --- a/libsigrok4DSL/session.c +++ b/libsigrok4DSL/session.c @@ -34,6 +34,8 @@ #define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) #define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) +char DS_RES_PATH[256] = {0}; + int bExportOriginalData = 0; //able export all data int session_loop_stop_flag = 0; @@ -832,4 +834,17 @@ SR_API int sr_get_export_original_flag() return bExportOriginalData; } +void sr_set_firmware_resource_dir(const char *dir) +{ + if (dir){ + strcpy(DS_RES_PATH, dir); + + int len = strlen(DS_RES_PATH); + if (DS_RES_PATH[len-1] != '/'){ + DS_RES_PATH[len] = '/'; + DS_RES_PATH[len+1] = 0; + } + } +} + /** @} */ diff --git a/qtpro/DSView.pro b/qtpro/DSView.pro index 419d9b4a..57b0ae30 100644 --- a/qtpro/DSView.pro +++ b/qtpro/DSView.pro @@ -33,8 +33,6 @@ INCLUDEPATH += /usr/include/libusb-1.0 INCLUDEPATH += /usr/include/boost INCLUDEPATH += /usr/include/python3.8 INCLUDEPATH += .. -#INCLUDEPATH += ../libsigrok4DSL -#INCLUDEPATH += ../DSView LIBS += /usr/lib/x86_64-linux-gnu/libglib-2.0.so LIBS += /usr/lib/x86_64-linux-gnu/libusb-1.0.so @@ -55,8 +53,6 @@ INCLUDEPATH += /usr/local/include/libusb-1.0 INCLUDEPATH += /usr/local/include/boost INCLUDEPATH += /Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m INCLUDEPATH += .. -#INCLUDEPATH += ../libsigrok4DSL -#INCLUDEPATH += ../DSView #LIBS += -framework CoreFoundation #LIBS += -framework CoreServices diff --git a/qtpro/DSView.pro.user b/qtpro/DSView.pro.user index 2e3a9259..1c801f1b 100644 --- a/qtpro/DSView.pro.user +++ b/qtpro/DSView.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId