]> sigrok.org Git - sigrok-qt.git/blobdiff - main.cpp
Add "Copyright and license" section.
[sigrok-qt.git] / main.cpp
index 0d6a3ee2bb2d8034d762e5973bf901c66d8a0f27..70fd9d079ce27415002b2f53f3e5c2a23797925b 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1,7 +1,7 @@
 /*
- * This file is part of the sigrok project.
+ * This file is part of the sigrok-qt project.
  *
- * Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
+ * Copyright (C) 2010-2012 Uwe Hermann <uwe@hermann-uwe.de>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
 extern "C" {
 #include <sigrokdecode.h> /* First, so we avoid a _POSIX_C_SOURCE warning. */
 #include <stdint.h>
-#include <sigrok.h>
+#include <libsigrok/libsigrok.h>
 }
 
 #include <iostream>
@@ -39,6 +39,9 @@ int main(int argc, char *argv[])
        QString locale = QLocale::system().name();
        QApplication a(argc, argv);
        QTranslator translator;
+       struct sr_context *sr_ctx;
+       sr_dev_driver **drivers;
+       int ret;
 
        translator.load(QString("locale/sigrok-qt_") + locale);
        a.installTranslator(&translator);
@@ -52,12 +55,23 @@ int main(int argc, char *argv[])
        qDebug() << "The Qt GUI is not yet usable, aborting.";
        // return 1;
 
-       if (sr_init() != SR_OK) {
-               qDebug() << "ERROR: libsigrok init failed.";
+       if ((ret = sr_init(&sr_ctx)) != SR_OK) {
+               qDebug() << "ERROR: libsigrok init failed (%s): %s."
+                        << sr_strerror_name(ret), sr_strerror(ret);
                return 1;
        }
        qDebug() << "libsigrok initialized successfully.";
 
+       /* Initialize all libsigrok drivers. */
+       drivers = sr_driver_list();
+       for (int i = 0; drivers[i]; ++i) {
+               if (sr_driver_init(sr_ctx, drivers[i]) != SR_OK) {
+                       qDebug("Failed to initialize driver '%s'.",
+                              drivers[i]->name);
+                       return 1;
+               }
+       }
+
        if (srd_init(NULL) != SRD_OK) {
                qDebug() << "ERROR: libsigrokdecode init failed.";
                return 1;
@@ -72,5 +86,21 @@ int main(int argc, char *argv[])
         */
        srd_decoder_load_all();
 
-       return a.exec();
+       /* Run the application. */
+       ret = a.exec();
+
+       /* Shutdown libsigrok. */
+       if ((ret = sr_exit(sr_ctx)) != SR_OK) {
+               qDebug() << "ERROR: libsigrok shutdown failed (%s): %s."
+                        << sr_strerror_name(ret), sr_strerror(ret);
+       }
+       qDebug() << "libsigrok shutdown was successful.";
+
+       /* Shutdown libsigrokdecode. */
+       if ((ret = srd_exit()) != SRD_OK) {
+               qDebug() << "ERROR: libsigrokdecode shutdown failed: %d.";
+       }
+       qDebug() << "libsigrokdecode shutdown was successful.";
+
+       return ret;
 }