Commit b340693eeb1211095da1ef8be1011f747c8e57e5
1 parent
49e31863
refactored initialization
Showing
6 changed files
with
31 additions
and
132 deletions
openbr/gui/initialize.cpp deleted
| 1 | -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | |
| 2 | - * Copyright 2012 The MITRE Corporation * | |
| 3 | - * * | |
| 4 | - * Licensed under the Apache License, Version 2.0 (the "License"); * | |
| 5 | - * you may not use this file except in compliance with the License. * | |
| 6 | - * You may obtain a copy of the License at * | |
| 7 | - * * | |
| 8 | - * http://www.apache.org/licenses/LICENSE-2.0 * | |
| 9 | - * * | |
| 10 | - * Unless required by applicable law or agreed to in writing, software * | |
| 11 | - * distributed under the License is distributed on an "AS IS" BASIS, * | |
| 12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * | |
| 13 | - * See the License for the specific language governing permissions and * | |
| 14 | - * limitations under the License. * | |
| 15 | - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ | |
| 16 | - | |
| 17 | -#include <QDesktopServices> | |
| 18 | -#include <QMetaType> | |
| 19 | -#include <openbr/openbr_plugin.h> | |
| 20 | - | |
| 21 | -#include "initialize.h" | |
| 22 | - | |
| 23 | -void br_initialize_gui(const char *sdk_path) | |
| 24 | -{ | |
| 25 | - qRegisterMetaType<br::File>("br::File"); | |
| 26 | - qRegisterMetaType<br::FileList>("br::FileList"); | |
| 27 | - qRegisterMetaType<br::Template>("br::Template"); | |
| 28 | - qRegisterMetaType<br::TemplateList>("br::TemplateList"); | |
| 29 | - br_initialize_qt(sdk_path); | |
| 30 | - br_set_property("log", qPrintable(QString("%1/log.txt").arg(br_scratch_path()))); | |
| 31 | -} |
openbr/gui/initialize.h deleted
| 1 | -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | |
| 2 | - * Copyright 2012 The MITRE Corporation * | |
| 3 | - * * | |
| 4 | - * Licensed under the Apache License, Version 2.0 (the "License"); * | |
| 5 | - * you may not use this file except in compliance with the License. * | |
| 6 | - * You may obtain a copy of the License at * | |
| 7 | - * * | |
| 8 | - * http://www.apache.org/licenses/LICENSE-2.0 * | |
| 9 | - * * | |
| 10 | - * Unless required by applicable law or agreed to in writing, software * | |
| 11 | - * distributed under the License is distributed on an "AS IS" BASIS, * | |
| 12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * | |
| 13 | - * See the License for the specific language governing permissions and * | |
| 14 | - * limitations under the License. * | |
| 15 | - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ | |
| 16 | - | |
| 17 | -#ifndef __INITIALIZE_H | |
| 18 | -#define __INITIALIZE_H | |
| 19 | - | |
| 20 | -#include <openbr/openbr_export.h> | |
| 21 | - | |
| 22 | -BR_EXPORT void br_initialize_gui(const char *sdk_path = ""); | |
| 23 | - | |
| 24 | -#endif // __INITIALIZE_H |
openbr/openbr.cpp
| ... | ... | @@ -108,11 +108,6 @@ void br_initialize(int &argc, char *argv[], const char *sdk_path) |
| 108 | 108 | Context::initialize(argc, argv, sdk_path); |
| 109 | 109 | } |
| 110 | 110 | |
| 111 | -void br_initialize_qt(const char *sdk_path) | |
| 112 | -{ | |
| 113 | - Context::initializeQt(sdk_path); | |
| 114 | -} | |
| 115 | - | |
| 116 | 111 | bool br_is_classifier(const char *algorithm) |
| 117 | 112 | { |
| 118 | 113 | return IsClassifier(algorithm); | ... | ... |
openbr/openbr.h
| ... | ... | @@ -209,17 +209,11 @@ BR_EXPORT void br_fuse(int num_input_simmats, const char *input_simmats[], const |
| 209 | 209 | |
| 210 | 210 | /*! |
| 211 | 211 | * \brief Wraps br::Context::initialize() |
| 212 | - * \see br_initialize_qt br_finalize | |
| 212 | + * \see br_finalize | |
| 213 | 213 | */ |
| 214 | 214 | BR_EXPORT void br_initialize(int &argc, char *argv[], const char *sdk_path = ""); |
| 215 | 215 | |
| 216 | 216 | /*! |
| 217 | - * \brief Wraps br::Context::initializeQt() | |
| 218 | - * \see br_initialize br_finalize | |
| 219 | - */ | |
| 220 | -BR_EXPORT void br_initialize_qt(const char *sdk_path = ""); | |
| 221 | - | |
| 222 | -/*! | |
| 223 | 217 | * \brief Wraps br::IsClassifier() |
| 224 | 218 | */ |
| 225 | 219 | BR_EXPORT bool br_is_classifier(const char *algorithm); | ... | ... |
openbr/openbr_plugin.cpp
| ... | ... | @@ -819,14 +819,16 @@ bool br::Context::checkSDKPath(const QString &sdkPath) |
| 819 | 819 | return QFileInfo(sdkPath + "/share/openbr/openbr.bib").exists(); |
| 820 | 820 | } |
| 821 | 821 | |
| 822 | -void br::Context::initialize(int &argc, char *argv[], const QString &sdkPath) | |
| 822 | +// We create our own when the user hasn't | |
| 823 | +static QCoreApplication *application = NULL; | |
| 824 | + | |
| 825 | +void br::Context::initialize(int &argc, char *argv[], QString sdkPath) | |
| 823 | 826 | { |
| 824 | 827 | // We take in argc as a reference due to: |
| 825 | 828 | // https://bugreports.qt-project.org/browse/QTBUG-5637 |
| 826 | 829 | // QApplication should be initialized before anything else. |
| 827 | 830 | // Since we can't ensure that it gets deleted last, we never delete it. |
| 828 | - static QCoreApplication *application = NULL; | |
| 829 | - if (application == NULL) { | |
| 831 | + if (QCoreApplication::instance() == NULL) { | |
| 830 | 832 | #ifndef BR_EMBEDDED |
| 831 | 833 | application = new QApplication(argc, argv); |
| 832 | 834 | #else |
| ... | ... | @@ -834,40 +836,24 @@ void br::Context::initialize(int &argc, char *argv[], const QString &sdkPath) |
| 834 | 836 | #endif |
| 835 | 837 | } |
| 836 | 838 | |
| 837 | - if (Globals == NULL) { | |
| 838 | - Globals = new Context(); | |
| 839 | - Globals->init(File()); | |
| 840 | - } | |
| 841 | - | |
| 842 | - initializeQt(sdkPath); | |
| 843 | - | |
| 844 | -#ifdef BR_DISTRIBUTED | |
| 845 | - int rank, size; | |
| 846 | - MPI_Init(&argc, &argv); | |
| 847 | - MPI_Cobr_rank(MPI_CObr_WORLD, &rank); | |
| 848 | - MPI_Cobr_size(MPI_CObr_WORLD, &size); | |
| 849 | - if (!quiet) qDebug() << "OpenBR distributed process" << rank << "of" << size; | |
| 850 | -#endif // BR_DISTRIBUTED | |
| 851 | -} | |
| 852 | - | |
| 853 | -void br::Context::initializeQt(QString sdkPath) | |
| 854 | -{ | |
| 855 | - if (Globals == NULL) { | |
| 856 | - Globals = new Context(); | |
| 857 | - Globals->init(File()); | |
| 858 | - } | |
| 859 | - | |
| 860 | 839 | QCoreApplication::setOrganizationName(COMPANY_NAME); |
| 861 | 840 | QCoreApplication::setApplicationName(PRODUCT_NAME); |
| 862 | 841 | QCoreApplication::setApplicationVersion(PRODUCT_VERSION); |
| 863 | 842 | |
| 864 | - qRegisterMetaType< QList<float> >(); | |
| 865 | - qRegisterMetaType< QList<int> >(); | |
| 843 | + qRegisterMetaType<cv::Mat>(); | |
| 844 | + qRegisterMetaType<br::File>(); | |
| 845 | + qRegisterMetaType<br::FileList>(); | |
| 846 | + qRegisterMetaType<br::Template>(); | |
| 847 | + qRegisterMetaType<br::TemplateList>(); | |
| 866 | 848 | qRegisterMetaType< br::Transform* >(); |
| 867 | - qRegisterMetaType< QList<br::Transform*> >(); | |
| 868 | 849 | qRegisterMetaType< br::Distance* >(); |
| 850 | + qRegisterMetaType< QList<int> >(); | |
| 851 | + qRegisterMetaType< QList<float> >(); | |
| 852 | + qRegisterMetaType< QList<br::Transform*> >(); | |
| 869 | 853 | qRegisterMetaType< QList<br::Distance*> >(); |
| 870 | - qRegisterMetaType< cv::Mat >(); | |
| 854 | + | |
| 855 | + Globals = new Context(); | |
| 856 | + Globals->init(File()); | |
| 871 | 857 | |
| 872 | 858 | qInstallMessageHandler(messageHandler); |
| 873 | 859 | |
| ... | ... | @@ -890,7 +876,6 @@ void br::Context::initializeQt(QString sdkPath) |
| 890 | 876 | } else { |
| 891 | 877 | if (!checkSDKPath(sdkPath)) qFatal("Unable to locate SDK from %s.", qPrintable(sdkPath)); |
| 892 | 878 | } |
| 893 | - | |
| 894 | 879 | Globals->sdkPath = sdkPath; |
| 895 | 880 | |
| 896 | 881 | // Trigger registered initializers |
| ... | ... | @@ -906,12 +891,11 @@ void br::Context::finalize() |
| 906 | 891 | foreach (const QSharedPointer<Initializer> &initializer, initializers) |
| 907 | 892 | initializer->finalize(); |
| 908 | 893 | |
| 909 | -#ifdef BR_DISTRIBUTED | |
| 910 | - MPI_Finalize(); | |
| 911 | -#endif // BR_DISTRIBUTED | |
| 912 | - | |
| 913 | 894 | delete Globals; |
| 914 | 895 | Globals = NULL; |
| 896 | + | |
| 897 | + delete application; | |
| 898 | + application = NULL; | |
| 915 | 899 | } |
| 916 | 900 | |
| 917 | 901 | QString br::Context::about() | ... | ... |
openbr/openbr_plugin.h
| ... | ... | @@ -652,33 +652,10 @@ public: |
| 652 | 652 | * -# The working directory |
| 653 | 653 | * -# The executable's location |
| 654 | 654 | * \note Tiggers \em abort() on failure to locate <tt>share/openbr/openbr.bib</tt>. |
| 655 | - * \note <a href="http://qt-project.org/">Qt</a> users should instead call initializeQt(). | |
| 656 | - * \see initializeQt finalize | |
| 655 | + * \note <a href="http://qt-project.org/">Qt</a> users should instead call this <i>after</i> initializing QApplication. | |
| 656 | + * \see finalize | |
| 657 | 657 | */ |
| 658 | - static void initialize(int &argc, char *argv[], const QString &sdkPath = ""); | |
| 659 | - | |
| 660 | - /*! | |
| 661 | - * \brief Alternative to initialize() for <a href="http://qt-project.org/">Qt</a> users. | |
| 662 | - * | |
| 663 | - * This alternative to initialize() should be used when a | |
| 664 | - * <a href="http://doc.qt.digia.com/stable/qcoreapplication.html">QCoreApplication</a> | |
| 665 | - * has already been defined. | |
| 666 | - * \code | |
| 667 | - * int main(int argc, char *argv[]) | |
| 668 | - * { | |
| 669 | - * QApplication a(argc, argv); | |
| 670 | - * br::Context::initializeQt(); | |
| 671 | - * | |
| 672 | - * // ... | |
| 673 | - * | |
| 674 | - * int result = a.exec(); | |
| 675 | - * br::Context::finalize(); | |
| 676 | - * return result; | |
| 677 | - * } | |
| 678 | - * \endcode | |
| 679 | - * \see initialize | |
| 680 | - */ | |
| 681 | - static void initializeQt(QString sdkPath); | |
| 658 | + static void initialize(int &argc, char *argv[], QString sdkPath = ""); | |
| 682 | 659 | |
| 683 | 660 | /*! |
| 684 | 661 | * \brief Call \em once at the end of the application to deallocate global variables. |
| ... | ... | @@ -1306,12 +1283,16 @@ BR_EXPORT void Cat(const QStringList &inputGalleries, const QString &outputGalle |
| 1306 | 1283 | |
| 1307 | 1284 | } // namespace br |
| 1308 | 1285 | |
| 1309 | -Q_DECLARE_METATYPE(QList<float>) | |
| 1310 | -Q_DECLARE_METATYPE(QList<int>) | |
| 1286 | +Q_DECLARE_METATYPE(cv::Mat) | |
| 1287 | +Q_DECLARE_METATYPE(br::File) | |
| 1288 | +Q_DECLARE_METATYPE(br::FileList) | |
| 1289 | +Q_DECLARE_METATYPE(br::Template) | |
| 1290 | +Q_DECLARE_METATYPE(br::TemplateList) | |
| 1311 | 1291 | Q_DECLARE_METATYPE(br::Transform*) |
| 1312 | -Q_DECLARE_METATYPE(QList<br::Transform*>) | |
| 1313 | 1292 | Q_DECLARE_METATYPE(br::Distance*) |
| 1293 | +Q_DECLARE_METATYPE(QList<int>) | |
| 1294 | +Q_DECLARE_METATYPE(QList<float>) | |
| 1295 | +Q_DECLARE_METATYPE(QList<br::Transform*>) | |
| 1314 | 1296 | Q_DECLARE_METATYPE(QList<br::Distance*>) |
| 1315 | -Q_DECLARE_METATYPE(cv::Mat) | |
| 1316 | 1297 | |
| 1317 | 1298 | #endif // __OPENBR_PLUGIN_H | ... | ... |