main.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. This file is part of QTau
  3. Copyright (C) 2013-2018 Tobias "Tomoko" Platen <tplaten@posteo.de>
  4. Copyright (C) 2013 digited <https://github.com/digited>
  5. Copyright (C) 2010-2013 HAL@ShurabaP <https://github.com/haruneko>
  6. QTau is free software: you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation, either version 3 of the License, or
  9. (at your option) any later version.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public License
  15. along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. SPDX-License-Identifier: GPL-3.0+
  17. */
  18. #include <QApplication>
  19. #include "Controller.h"
  20. #include <QIcon>
  21. #include "Utils.h"
  22. #include <sys/file.h>
  23. #include <errno.h>
  24. #include <unistd.h>
  25. #define __devloglevel__ 8
  26. int main(int argc, char *argv[])
  27. {
  28. QApplication app(argc, argv);
  29. app.setWindowIcon(QIcon(":/images/appicon_ouka_alice.png"));
  30. int pid_file = open("/tmp/qtau.lock", O_CREAT | O_RDWR, 0666);
  31. int rc = flock(pid_file, LOCK_EX | LOCK_NB);
  32. if(rc) {
  33. if(EWOULDBLOCK == errno)
  34. {
  35. DEVLOG_ERROR("qtau is running");
  36. return rc;
  37. }
  38. }
  39. //NOTHING YET: metatypes for plugins and jack
  40. //qRegisterMetaType<EAudioPlayback>("EAudioPlayback");
  41. qtauController c(app.applicationDirPath());
  42. c.run(); // create UI that can immediately call back, thus requires already created & inited controller
  43. rc = app.exec();
  44. unlink("/tmp/qtau.lock");
  45. c.shutdown(rc);//kill all threads
  46. return rc;
  47. }