-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extensions - Add Linux support for the Mumble plugin #1218
base: mumble-plugin
Are you sure you want to change the base?
Extensions - Add Linux support for the Mumble plugin #1218
Commits on Aug 28, 2022
-
Mostly trailing whitespace at the end of lines
Configuration menu - View commit details
-
Copy full SHA for dba936c - Browse repository at this point
Copy the full SHA dba936cView commit details -
Make some syntactic changes for other compilers
Make some of the first steps to be able to build parts of ACRE on other platforms (such as GCC). Mostly, this amounts to differences in preprocessors, and some builtins.
Configuration menu - View commit details
-
Copy full SHA for f791e31 - Browse repository at this point
Copy the full SHA f791e31View commit details -
Update CMakelists for Linux compatibility
This allows ACRE2Core, ACRE2Shared, and ACRE2Wine to be built under Linux toolchains. We gate DirectX inclusion to Windows only; on Linux, we include FAudio as a drop in replacement for x3daudio. .pdb debugging symbols generated on the Windows build are not copied on Linux. PIC has been flipped on for Shared and Core on Linux. ACRE2Arma, ACRE2TS, ACRE2Steam, and the utility modules are not built on Linux, and it doesn't really make sense for them to be.
Configuration menu - View commit details
-
Copy full SHA for 9bb6948 - Browse repository at this point
Copy the full SHA 9bb6948View commit details -
Extend compat.h to provide Linux compat types
Some Windows types and functions have been aliased for compilation on Linux.
Configuration menu - View commit details
-
Copy full SHA for 8a2833f - Browse repository at this point
Copy the full SHA 8a2833fView commit details -
Provide FAudio/x3daudio compatibility on Linux
FilterPosition relies on x3daudio to do positional transformations. On Linux, we can use FAudio as an (almost) drop-in replacement.
Configuration menu - View commit details
-
Copy full SHA for 51c0737 - Browse repository at this point
Copy the full SHA 51c0737View commit details -
Alias tbb concurrency modules on Linux
Intel TBB is available as a library on Linux, under the `tbb` namespace, rather than the `concurrency` namespace as on Windows.
Configuration menu - View commit details
-
Copy full SHA for a986200 - Browse repository at this point
Copy the full SHA a986200View commit details -
Update paths when building on Linux
ACRE's config file will be stored in $XDG_CONFIG_HOME (~/.config), as per the XDG standard. Temporary files are stored in /tmp/acre-${USER}, and logs in $XDG_DATA_HOME (~/.local/share). This tends to be Linux desktop users expect.
Configuration menu - View commit details
-
Copy full SHA for 34ab3c6 - Browse repository at this point
Copy the full SHA 34ab3c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for af178c9 - Browse repository at this point
Copy the full SHA af178c9View commit details -
Build Log, TextMessage, ini on Linux
Replace some Windows specific string functions with cross-compatible ones, and don't try to pop up message boxes on Linux.
Configuration menu - View commit details
-
Copy full SHA for bec0e99 - Browse repository at this point
Copy the full SHA bec0e99View commit details -
Wrap Windows includes in platform checks
An unused sddl.h include has also been removed
Configuration menu - View commit details
-
Copy full SHA for 891ef08 - Browse repository at this point
Copy the full SHA 891ef08View commit details -
Configuration menu - View commit details
-
Copy full SHA for c984069 - Browse repository at this point
Copy the full SHA c984069View commit details -
Do not load AcreSettings in constructor
If the default path baked into the constructor is not the same as one that is later loaded, the user will end up with two config files! Only one will be used. There is no need to load the config file in the constructor, however. Hardcoded defaults are already set, and users of the class all load config files explicitly.
Configuration menu - View commit details
-
Copy full SHA for 8def745 - Browse repository at this point
Copy the full SHA 8def745View commit details -
Reimplement NamedPipeServer on Linux
This is the most involved change in this changeset. On Linux, Arma runs under WINE, but Mumble is native. There's no (known to me) way to do IPC between WINE processes and native processes; WINE makes it (purposefully?) difficult. It may be possible to use Windows 10+ Unix socket compatibility (if WINE supports it), or some other mechanism. But this solution uses a simple duplex network socket listening on localhost, with a default port of 19141. The Mumble side is responsible for setting up the server, and the Arma side connects. ACRE uses Windows named pipes in "message" mode, which means rather than a stream of bytes, senders send a stream of messages and receivers receive whole messages, not partial messages. This is not the case with a TCP socket, and so a simple length encoding is used. Whenever a sender has a message to send, they first send a four byte unsigned integer that is the length of the message to come, and the receiver first reads exactly four bytes, decodes the length of the message, then reads exactly that many bytes. The code is written to be tolerant (as in: will not crash, and will simply drop the connection and wait for the otherside to reconnect) to network faults and partial sends/receives. However, given that the client and server are on the same networking stack, conditions are ideal: sends and receives should match up exactly, and faults should be impossible. Since the port chosen could conflict with another server, possibly another instance of Mumble/Acre/Arma, it is configurable. On the Mumble side, it can be configured in the ACRE config file. On the Arma side, it will be specified as a CBA setting and passed in to the extension via a parameter to callExtension.
Configuration menu - View commit details
-
Copy full SHA for a8957d9 - Browse repository at this point
Copy the full SHA a8957d9View commit details -
Modify arma2ts to use sockets if running in Wine
When running in Wine, ACRE2Arma.dll will mirror the changes to NamedPipeServer.cpp for Linux; instead of using named pipes, it will connect to the socket opened on the other side. A helper function has been added to detect if running under Wine, by checking for a function Wine defines in ntdll.
Configuration menu - View commit details
-
Copy full SHA for b2b9b17 - Browse repository at this point
Copy the full SHA b2b9b17View commit details -
Also, publish the resulting Linux/Mumble plugin
Configuration menu - View commit details
-
Copy full SHA for 4ff349d - Browse repository at this point
Copy the full SHA 4ff349dView commit details
Commits on Aug 29, 2022
-
Fix arma2ts to detect Wine once on start
This is how I intended it, but during a rewrite/rebase it got screwed up.
Configuration menu - View commit details
-
Copy full SHA for 61ea041 - Browse repository at this point
Copy the full SHA 61ea041View commit details
Commits on Sep 19, 2022
-
The atof function is locale dependent. Specifically, it uses the locale-specific decimal separator to convert floating-point strings; that is, in a locale that uses commas as decimal separators, "0,5" will convert to 0.5, whereas "0.5" will fail, and convert as 0.0. Strings coming from Arma will always use a period as a decimal separator, this causes myriad failures. On Linux, on startup, we now set LC_NUMERIC to C, which has the behavior we want. I'm not certain why this isn't a problem on Win32. There may be a path in Qt/Mumble that sets locale one way on Linux and another on Windows.
Configuration menu - View commit details
-
Copy full SHA for da36155 - Browse repository at this point
Copy the full SHA da36155View commit details
Commits on Sep 20, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 87d15c1 - Browse repository at this point
Copy the full SHA 87d15c1View commit details -
Remove hardcoded filenames from voip_plugin
Instead of hardcoding the filenames of the destination files for plugins, VOIPPlugin::handle_update_plugin will now use the basenames of the x32 and x64 plugins paths passed into it.
Configuration menu - View commit details
-
Copy full SHA for a8def6d - Browse repository at this point
Copy the full SHA a8def6dView commit details
Commits on Sep 21, 2022
-
Auto-install plugin to Mumble on Linux
If running under Wine, ACRE2Steam will now detect that and automatically install the Linux Mumble plugin to the Linux version of Mumble, if it is present.
Configuration menu - View commit details
-
Copy full SHA for 659bffb - Browse repository at this point
Copy the full SHA 659bffbView commit details
Commits on Sep 25, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 5d9af92 - Browse repository at this point
Copy the full SHA 5d9af92View commit details