diff options
-rw-r--r-- | 3rdparty-notices/VJOY-COPYING.txt | 281 | ||||
-rw-r--r-- | cmake/opentrack-word-size.cmake | 3 | ||||
-rw-r--r-- | contrib/vjoy/VJoy.dll | bin | 94208 -> 0 bytes | |||
-rw-r--r-- | csv/csv.cpp | 27 | ||||
-rw-r--r-- | gui/ui.cpp | 3 | ||||
-rw-r--r-- | opentrack-logic/dinput.hpp | 3 | ||||
-rw-r--r-- | opentrack-logic/state.hpp | 6 | ||||
-rw-r--r-- | opentrack/library-path.cpp | 4 | ||||
-rw-r--r-- | opentrack/library-path.hpp | 2 | ||||
-rw-r--r-- | opentrack/plugin-support.hpp | 19 | ||||
-rw-r--r-- | proto-vjoy/CMakeLists.txt | 21 | ||||
-rw-r--r-- | proto-vjoy/ftnoir_protocol_vjoy.h | 9 | ||||
-rw-r--r-- | proto-vjoy/ftnoir_vjoy_controls.ui | 10 | ||||
-rw-r--r-- | proto-wine/ftnoir_protocol_wine.cpp | 7 |
14 files changed, 342 insertions, 53 deletions
diff --git a/3rdparty-notices/VJOY-COPYING.txt b/3rdparty-notices/VJOY-COPYING.txt new file mode 100644 index 00000000..35936d09 --- /dev/null +++ b/3rdparty-notices/VJOY-COPYING.txt @@ -0,0 +1,281 @@ +VJoy is released under the +Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported license. + +The software's author is a company named Headsoft with a website at +<http://www.headsoft.com.au/index.php?category=vjoy> + +License text follows: + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE +BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE +CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE +IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + +"Adaptation" means a work based upon the Work, or upon the Work and other +pre-existing works, such as a translation, adaptation, derivative work, +arrangement of music or other alterations of a literary or artistic work, +or phonogram or performance and includes cinematographic adaptations or +any other form in which the Work may be recast, transformed, or adapted +including in any form recognizably derived from the original, except that +a work that constitutes a Collection will not be considered an Adaptation +for the purpose of this License. For the avoidance of doubt, where the +Work is a musical work, performance or phonogram, the synchronization of +the Work in timed-relation with a moving image ("synching") will be +considered an Adaptation for the purpose of this License. + +"Collection" means a collection of literary or artistic works, such as +encyclopedias and anthologies, or performances, phonograms or broadcasts, or +other works or subject matter other than works listed in Section 1(f) below, +which, by reason of the selection and arrangement of their contents, +constitute intellectual creations, in which the Work is included in its +entirety in unmodified form along with one or more other contributions, +each constituting separate and independent works in themselves, which +together are assembled into a collective whole. A work that constitutes +a Collection will not be considered an Adaptation (as defined above) for +the purposes of this License. + +"Distribute" means to make available to the public the original and copies of +the Work through sale or other transfer of ownership. + +"Licensor" means the individual, individuals, entity or entities that offer(s) +the Work under the terms of this License. + +"Original Author" means, in the case of a literary or artistic work, the +individual, individuals, entity or entities who created the Work or if no +individual or entity can be identified, the publisher; and in addition (i) in +the case of a performance the actors, singers, musicians, dancers, and other +persons who act, sing, deliver, declaim, play in, interpret or otherwise +perform literary or artistic works or expressions of folklore; (ii) in the +case of a phonogram the producer being the person or legal entity who first +fixes the sounds of a performance or other sounds; and, (iii) in the case of +broadcasts, the organization that transmits the broadcast. + +"Work" means the literary and/or artistic work offered under the terms of this +License including without limitation any production in the literary, +scientific and artistic domain, whatever may be the mode or form of +its expression including digital form, such as a book, pamphlet and +other writing; a lecture, address, sermon or other work of the same +nature; a dramatic or dramatico-musical work; a choreographic work or +entertainment in dumb show; a musical composition with or without +words; a cinematographic work to which are assimilated works expressed +by a process analogous to cinematography; a work of drawing, painting, +architecture, sculpture, engraving or lithography; a photographic work +to which are assimilated works expressed by a process analogous to +photography; a work of applied art; an illustration, map, plan, sketch +or three-dimensional work relative to geography, topography, +architecture or science; a performance; a broadcast; a phonogram; a +compilation of data to the extent it is protected as a copyrightable +work; or a work performed by a variety or circus performer to the +extent it is not otherwise considered a literary or artistic work. + +"You" means an individual or entity exercising rights under this License who +has not previously violated the terms of this License with respect to the +Work, or who has received express permission from the Licensor to exercise +rights under this License despite a previous violation. + +"Publicly Perform" means to perform public recitations of the Work and to +communicate to the public those public recitations, by any means or process, +including by wire or wireless means or public digital +performances; to make available to the public Works in such a way +that members of the public may access these Works from a place and +at a place individually chosen by them; to perform the Work to the +public by any means or process and the communication to the public +of the performances of the Work, including by public digital +performance; to broadcast and rebroadcast the Work by any means +including signs, sounds or images. + +"Reproduce" means to make copies of the Work by any means including without +limitation by sound or visual recordings and the right of fixation and +reproducing fixations of the Work, including storage of a protected +performance or phonogram in digital form or other electronic medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, +or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + +to Reproduce the Work, to incorporate the Work into one or more Collections, +and to Reproduce the Work as incorporated in the Collections; and, + +to Distribute and Publicly Perform the Work including as incorporated in +Collections. + +The above rights may be exercised in all media and formats whether now known +or hereafter devised. The above rights include the right to make such +modifications as are technically necessary to exercise the rights in other +media and formats, but otherwise you have no rights to make Adaptations. +Subject to 8(f), all rights not expressly granted by Licensor are hereby +reserved, including but not limited to the rights set forth in Section 4(d). + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + +You may Distribute or Publicly Perform the Work only under the terms of this +License. You must include a copy of, or the Uniform Resource Identifier (URI) +for, this License with every copy of the Work You Distribute or Publicly +Perform. You may not offer or impose any terms on the Work that restrict +the terms of this License or the ability of the recipient of the Work to +exercise the rights granted to that recipient under the terms of the +License. You may not sublicense the Work. You must keep intact all notices +that refer to this License and to the disclaimer of warranties with every +copy of the Work You Distribute or Publicly Perform. When You Distribute +or Publicly Perform the Work, You may not impose any effective +technological measures on the Work that restrict the ability of a +recipient of the Work from You to exercise the rights granted to that +recipient under the terms of the License. This Section 4(a) applies to the +Work as incorporated in a Collection, but this does not require the +Collection apart from the Work itself to be made subject to the terms of +this License. If You create a Collection, upon notice from any Licensor +You must, to the extent practicable, remove from the Collection any credit +as required by Section 4(c), as requested. + +You may not exercise any of the rights granted to You in Section 3 above in +any manner that is primarily intended for or directed toward commercial +advantage or private monetary compensation. The exchange of the Work for other +copyrighted works by means of digital file-sharing or otherwise shall not be +considered to be intended for or directed toward commercial advantage or +private monetary compensation, provided there is no payment of any monetary +compensation in connection with the exchange of copyrighted works. + +If You Distribute, or Publicly Perform the Work or Collections, You must, +unless a request has been made pursuant to Section 4(a), keep intact all +copyright notices for the Work and provide, reasonable to the medium or +means You are utilizing: (i) the name of the Original Author (or pseudonym, +if applicable) if supplied, and/or if the Original Author and/or +Licensor designate another party or parties (e.g., a sponsor institute, +publishing entity, journal) for attribution ("Attribution Parties") +in Licensor's copyright notice, terms of service or by other reasonable +means, the name of such party or parties; (ii) the title of the Work if +supplied; (iii) to the extent reasonably practicable, the URI, if any, that +Licensor specifies to be associated with the Work, unless such URI does not +refer to the copyright notice or licensing information for the Work. The +credit required by this Section 4(c) may be implemented in any reasonable +manner; provided, however, that in the case of a Collection, at a minimum +such credit will appear, if a credit for all contributing authors of +Collection appears, then as part of these credits and in a manner at least +as prominent as the credits for the other contributing authors. For the +avoidance of doubt, You may only use the credit required by this Section +for the purpose of attribution in the manner set out above and, by +exercising Your rights under this License, You may not implicitly or +explicitly assert or imply any connection with, sponsorship or endorsement +by the Original Author, Licensor and/or Attribution Parties, as +appropriate, of You or Your use of the Work, without the separate, express +prior written permission of the Original Author, Licensor and/or +Attribution Parties. + +For the avoidance of doubt: + +Non-waivable Compulsory License Schemes. In those jurisdictions in which the +right to collect royalties through any statutory or compulsory licensing +scheme cannot be waived, the Licensor reserves the exclusive right to collect +such royalties for any exercise by You of the rights granted under this +License; + +Waivable Compulsory License Schemes. In those jurisdictions in which the right +to collect royalties through any statutory or compulsory licensing scheme can +be waived, the Licensor reserves the exclusive right to collect such royalties +for any exercise by You of the rights granted under this License if Your +exercise of such rights is for a purpose or use which is otherwise than +noncommercial as permitted under Section 4(b) and otherwise waives the right +to collect royalties through any statutory or compulsory licensing scheme; +and, + +Voluntary License Schemes. The Licensor reserves the right to collect +royalties, whether individually or, in the event that the Licensor is a member +of a collecting society that administers voluntary licensing schemes, via that +society, from any exercise by You of the rights granted under this License +that is for a purpose or use which is otherwise than noncommercial as +permitted under Section 4(b). + +Except as otherwise agreed in writing by the Licensor or as may be otherwise +permitted by applicable law, if You Reproduce, Distribute or Publicly Perform +the Work either by itself or as part of any Collections, You must not distort, +mutilate, modify or take other derogatory action in relation to the Work +which would be prejudicial to the Original Author's honor or reputation. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS +THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND +CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, +WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS +FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT +OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE +EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO +YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, +IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY +SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING +OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN +ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + +This License and the rights granted hereunder will terminate automatically +upon any breach by You of the terms of this License. Individuals or entities +who have received Collections from You under this License, however, will not +have their licenses terminated provided such individuals or entities remain in +full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will +survive any termination of this License. + +Subject to the above terms and conditions, the license granted here is +perpetual (for the duration of the applicable copyright in the Work). +Notwithstanding the above, Licensor reserves the right to release the Work +under different license terms or to stop distributing the Work at any time; +provided, however that any such election will not serve to withdraw this +License (or any other license that has been, or is required to be, granted +under the terms of this License), and this License will continue in +full force and effect unless terminated as stated above. + +8. Miscellaneous + +Each time You Distribute or Publicly Perform the Work or a Collection, the +Licensor offers to the recipient a license to the Work on the same terms and +conditions as the license granted to You under this License. + +If any provision of this License is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of +the terms of this License, and without further action by the parties to this +agreement, such provision shall be reformed to the minimum extent necessary to +make such provision valid and enforceable. + +No term or provision of this License shall be deemed waived and no breach +consented to unless such waiver or consent shall be in writing and signed by +the party to be charged with such waiver or consent. + +This License constitutes the entire agreement between the parties with respect +to the Work licensed here. There are no understandings, agreements or +representations with respect to the Work not specified here. Licensor shall +not be bound by any additional provisions that may appear in any communication +from You. This License may not be modified without the mutual written +agreement of the Licensor and You. + +The rights granted under, and the subject matter referenced, in this License +were drafted utilizing the terminology of the Berne Convention for the +Protection of Literary and Artistic Works (as amended on September 28, 1979), +the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the +WIPO Performances and Phonograms Treaty of 1996 and the Universal +Copyright Convention (as revised on July 24, 1971). These rights +and subject matter take effect in the relevant jurisdiction in +which the License terms are sought to be enforced according to the +corresponding provisions of the implementation of those treaty +provisions in the applicable national law. If the standard suite of +rights granted under applicable copyright law includes additional +rights not granted under this License, such additional rights are +deemed to be included in the License; this License is not intended +to restrict the license of any rights under applicable law. + diff --git a/cmake/opentrack-word-size.cmake b/cmake/opentrack-word-size.cmake index c670ed59..19a854ed 100644 --- a/cmake/opentrack-word-size.cmake +++ b/cmake/opentrack-word-size.cmake @@ -1,8 +1,7 @@ include(CheckTypeSize)
check_type_size(void* opentrack-word-size BUILTIN_TYPES_ONLY LANGUAGE C)
-message(STATUS "detected word size is ${opentrack-word-size}")
if(opentrack-word-size LESS 4)
- message(FATAL_ERROR "word size either misdetected or really less than 4")
+ message(FATAL_ERROR "word size '${opentrack-word-size}' either misdetected or really less than 4")
endif()
set(opentrack-word-size ${opentrack-word-size})
if(opentrack-word-size EQUAL 8)
diff --git a/contrib/vjoy/VJoy.dll b/contrib/vjoy/VJoy.dll Binary files differdeleted file mode 100644 index e3446675..00000000 --- a/contrib/vjoy/VJoy.dll +++ /dev/null diff --git a/csv/csv.cpp b/csv/csv.cpp index 668da442..14bcb957 100644 --- a/csv/csv.cpp +++ b/csv/csv.cpp @@ -10,12 +10,11 @@ */ #include "csv.h" -#include "opentrack/library-path.hpp" +#include "opentrack-library-path.h" #include <QTextDecoder> #include <QFile> #include <QCoreApplication> #include <QString> - #include <QDebug> #include <utility> @@ -24,8 +23,8 @@ using std::move; const QTextCodec* CSV::m_codec = QTextCodec::codecForName("System"); -const QRegExp CSV::m_rx = QRegExp(QStringLiteral("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)?\\n?")); -const QRegExp CSV::m_rx2 = QRegExp(QStringLiteral("(?:\"([^\"]*)\";?)|(?:([^;]*);?)?")); +const QRegExp CSV::m_rx = QRegExp(QString("((?:(?:[^;\\n]*;?)|(?:\"[^\"]*\";?))*)?\\n?")); +const QRegExp CSV::m_rx2 = QRegExp(QString("(?:\"([^\"]*)\";?)|(?:([^;]*);?)?")); CSV::CSV(QIODevice* device) : m_device(device), @@ -60,14 +59,14 @@ QString CSV::readLine() bool CSV::parseLine(QStringList& ret) { - QString line(move(readLine())); + QString line(readLine()); QStringList list; int pos2 = 0; if (line.size() == 0) { - ret = move(QStringList()); + ret = QStringList(); return m_device->size() > m_pos; } else @@ -76,9 +75,9 @@ bool CSV::parseLine(QStringList& ret) { QString col; if (m_rx2.cap(1).size() > 0) - col = move(m_rx2.cap(1)); + col = m_rx2.cap(1); else if (m_rx2.cap(2).size() > 0) - col = move(m_rx2.cap(2)); + col = m_rx2.cap(2); list << move(col); @@ -97,11 +96,11 @@ bool CSV::getGameData(int id, unsigned char* table, QString& gamename) for (int i = 0; i < 8; i++) table[i] = 0; - QString id_str(move(QString::number(id))); + QString id_str(QString::number(id)); - static const QString libexec_path(QStringLiteral("./") + - QString(opentrack_library_path) + - QStringLiteral("/settings/facetracknoir supported games.csv")); + static const QString libexec_path(QCoreApplication::applicationDirPath() + + QString(OPENTRACK_LIBRARY_PATH) + + QString("settings/facetracknoir supported games.csv")); QFile file(QCoreApplication::applicationDirPath() + libexec_path); @@ -134,9 +133,9 @@ bool CSV::getGameData(int id, unsigned char* table, QString& gamename) const QString proto(move(gameLine.at(3))); const QString name(move(gameLine.at(1))); - const QByteArray id_cstr = move(gameLine.at(7).toLatin1()); + const QByteArray id_cstr = gameLine.at(7).toLatin1(); - if (proto == QStringLiteral("V160")) + if (proto == QString("V160")) { /* nothing */ } @@ -9,9 +9,11 @@ #include "ui.h" #include "opentrack-logic/tracker.h" #include "opentrack-compat/options.hpp" +#include "opentrack-library-path.h" #include "new_file_dialog.h" #include <QFileDialog> #include <QDesktopServices> +#include <QCoreApplication> #ifndef _WIN32 # include <unistd.h> @@ -20,6 +22,7 @@ #endif MainWindow::MainWindow() : + State(QCoreApplication::applicationDirPath() + OPENTRACK_LIBRARY_PATH), pose_update_timer(this), kbd_quit(QKeySequence("Ctrl+Q"), this), is_refreshing_profiles(false) diff --git a/opentrack-logic/dinput.hpp b/opentrack-logic/dinput.hpp index 9300f39f..205fc656 100644 --- a/opentrack-logic/dinput.hpp +++ b/opentrack-logic/dinput.hpp @@ -5,10 +5,11 @@ #ifndef DIRECTINPUT_VERSION # define DIRECTINPUT_VERSION 0x800 #endif +#include "export.hpp" #include <dinput.h> #include <windows.h> -struct dinput_handle final +struct OPENTRACK_LOGIC_EXPORT dinput_handle final { using di_t = LPDIRECTINPUT8; private: diff --git a/opentrack-logic/state.hpp b/opentrack-logic/state.hpp index 7e9d10cb..1c608f7a 100644 --- a/opentrack-logic/state.hpp +++ b/opentrack-logic/state.hpp @@ -8,7 +8,6 @@ #pragma once -#include <vector> #include "opentrack-compat/options.hpp" using namespace options; #include "opentrack/plugin-support.hpp" @@ -16,10 +15,13 @@ using namespace options; #include "mappings.hpp" #include "selected-libraries.hpp" #include "work.hpp" +#include <vector> +#include <QString> struct State { - State() : + State(const QString& library_path) : + modules(library_path), pose(std::vector<axis_opts*>{&s.a_x, &s.a_y, &s.a_z, &s.a_yaw, &s.a_pitch, &s.a_roll}) {} Modules modules; diff --git a/opentrack/library-path.cpp b/opentrack/library-path.cpp deleted file mode 100644 index 683dc346..00000000 --- a/opentrack/library-path.cpp +++ /dev/null @@ -1,4 +0,0 @@ -#include "library-path.hpp" -#include "opentrack-library-path.h" - -const char* opentrack_library_path = OPENTRACK_LIBRARY_PATH; diff --git a/opentrack/library-path.hpp b/opentrack/library-path.hpp deleted file mode 100644 index 49a3adb4..00000000 --- a/opentrack/library-path.hpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "export.hpp" -extern "C" OPENTRACK_API_EXPORT const char* opentrack_library_path; diff --git a/opentrack/plugin-support.hpp b/opentrack/plugin-support.hpp index dbb985dc..a26d7f08 100644 --- a/opentrack/plugin-support.hpp +++ b/opentrack/plugin-support.hpp @@ -9,7 +9,6 @@ #include "plugin-api.hpp" #include "opentrack-compat/options.hpp" -#include "library-path.hpp" #include <QWidget> #include <QDebug> @@ -63,8 +62,7 @@ struct dylib final { if (filename.size() == 0) return; - QString fullPath = QCoreApplication::applicationDirPath() + "/" + filename; - handle = new QLibrary(fullPath); + handle = new QLibrary(filename); handle->setLoadHints(QLibrary::PreventUnloadHint | handle->loadHints()); struct _foo { @@ -106,7 +104,7 @@ struct dylib final { delete handle; } - static QList<mem<dylib>> enum_libraries() + static QList<mem<dylib>> enum_libraries(const QString& library_path) { const char* filters_n[] = { OPENTRACK_SOLIB_PREFIX "opentrack-filter-*." OPENTRACK_SOLIB_EXT, OPENTRACK_SOLIB_PREFIX "opentrack-tracker-*." OPENTRACK_SOLIB_EXT, @@ -114,9 +112,7 @@ struct dylib final { }; const Type filters_t[] = { Filter, Tracker, Protocol }; - static const QString libexec_path(QStringLiteral("./") + opentrack_library_path); - - QDir settingsDir(libexec_path); + QDir settingsDir(library_path); QList<mem<dylib>> ret; @@ -130,7 +126,7 @@ struct dylib final { { QIcon icon; QString longName; - auto lib = std::make_shared<dylib>(libexec_path + QStringLiteral("/") + filename, t); + auto lib = std::make_shared<dylib>(library_path + filename, t); qDebug() << "Loading" << filename; std::cout.flush(); if (!get_metadata(lib, longName, icon)) @@ -174,9 +170,10 @@ private: } }; -struct Modules { - Modules() : - module_list(dylib::enum_libraries()), +struct Modules +{ + Modules(const QString& library_path) : + module_list(dylib::enum_libraries(library_path)), filter_modules(filter(dylib::Filter)), tracker_modules(filter(dylib::Tracker)), protocol_modules(filter(dylib::Protocol)) diff --git a/proto-vjoy/CMakeLists.txt b/proto-vjoy/CMakeLists.txt index 5584c876..1c4f7fb9 100644 --- a/proto-vjoy/CMakeLists.txt +++ b/proto-vjoy/CMakeLists.txt @@ -1,18 +1,23 @@ if(WIN32) set(SDK_VJOY "" CACHE PATH "VJoy SDK path") if(SDK_VJOY) - set(link "") + if(opentrack-64bit) + set(arch 64) + else() + set(arch 32) + endif() + set(lib ${SDK_VJOY}/VJoy${arch}.dll) + if (MSVC) + set(implib "${SDK_VJOY}/VJoy${arch}.lib") + else() + set(implib "${lib}") + endif() if(CMAKE_COMPILER_IS_GNUCXX) set(link "-Wl,--enable-stdcall-fixup") endif() opentrack_boilerplate(opentrack-proto-vjoy LINK "${link}") - if(MSVC) - set(ext .lib) - else() - set(ext .dll) - endif() - target_link_libraries(opentrack-proto-vjoy ${MY_QT_LIBS} ${SDK_VJOY}/VJoy${ext}) + target_link_libraries(opentrack-proto-vjoy "${implib}") target_include_directories(opentrack-proto-vjoy SYSTEM PUBLIC ${SDK_VJOY}) - install(FILES "${SDK_VJOY}/VJoy.dll" DESTINATION . ${opentrack-perms}) + install(FILES "${lib}" DESTINATION . RENAME "VJoy.dll") endif() endif() diff --git a/proto-vjoy/ftnoir_protocol_vjoy.h b/proto-vjoy/ftnoir_protocol_vjoy.h index 118306b5..949eeb92 100644 --- a/proto-vjoy/ftnoir_protocol_vjoy.h +++ b/proto-vjoy/ftnoir_protocol_vjoy.h @@ -79,12 +79,13 @@ typedef struct _JOYSTICK_STATE UINT32 Buttons; // 32 Buttons } JOYSTICK_STATE, * PJOYSTICK_STATE; +#define VJOY_API extern "C" __declspec(dllimport) + #ifndef _MSC_VER -EXTERN_C BOOL __stdcall VJoy_Initialize(PCHAR name, PCHAR serial); -EXTERN_C VOID __stdcall VJoy_Shutdown(); -EXTERN_C BOOL __stdcall VJoy_UpdateJoyState(int id, PJOYSTICK_STATE pJoyState); +VJOY_API BOOL __stdcall VJoy_Initialize(PCHAR name, PCHAR serial); +VJOY_API VOID __stdcall VJoy_Shutdown(); +VJOY_API BOOL __stdcall VJoy_UpdateJoyState(int id, PJOYSTICK_STATE pJoyState); #else -#define VJOY_API __declspec(dllimport) VJOY_API BOOL __stdcall VJoy_Initialize(PCHAR name, PCHAR serial); VJOY_API VOID __stdcall VJoy_Shutdown(); VJOY_API BOOL __stdcall VJoy_UpdateJoyState(int id, PJOYSTICK_STATE pJoyState); diff --git a/proto-vjoy/ftnoir_vjoy_controls.ui b/proto-vjoy/ftnoir_vjoy_controls.ui index 2214b887..aa465b5c 100644 --- a/proto-vjoy/ftnoir_vjoy_controls.ui +++ b/proto-vjoy/ftnoir_vjoy_controls.ui @@ -9,7 +9,7 @@ <rect> <x>0</x> <y>0</y> - <width>228</width> + <width>280</width> <height>69</height> </rect> </property> @@ -30,7 +30,13 @@ <item> <widget class="QLabel" name="label"> <property name="text"> - <string>No settings necessary</string> + <string><html><head/><body><p>Go to <a href="http://headsoft.com.au/index.php?category=vjoy"><span style=" text-decoration: underline; color:#0000ff;">Headsoft's site</span></a> for driver download first.</p></body></html></string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="openExternalLinks"> + <bool>true</bool> </property> </widget> </item> diff --git a/proto-wine/ftnoir_protocol_wine.cpp b/proto-wine/ftnoir_protocol_wine.cpp index d99164c6..f11ed8cb 100644 --- a/proto-wine/ftnoir_protocol_wine.cpp +++ b/proto-wine/ftnoir_protocol_wine.cpp @@ -1,5 +1,5 @@ #include "ftnoir_protocol_wine.h" -#include "opentrack/library-path.hpp" +#include "opentrack-library-path.h" #include <QString> #include <QStringList> #include <QCoreApplication> @@ -15,8 +15,9 @@ FTNoIR_Protocol::FTNoIR_Protocol() : lck_shm(WINE_SHM_NAME, WINE_MTX_NAME, sizeo shm = (WineSHM*) lck_shm.ptr(); memset(shm, 0, sizeof(*shm)); } - static const QString library_path(opentrack_library_path); - wrapper.start("wine", QStringList() << (QCoreApplication::applicationDirPath() + library_path + "opentrack-wrapper-wine.exe.so")); + static const QString library_path(QCoreApplication::applicationDirPath() + OPENTRACK_LIBRARY_PATH); + wrapper.setWorkingDirectory(QCoreApplication::applicationDirPath()); + wrapper.start("wine", QStringList() << (library_path + "opentrack-wrapper-wine.exe.so")); } FTNoIR_Protocol::~FTNoIR_Protocol() |