Robbert van der Helm
5f5a7bbdd2
Only call ftruncate() when size > 0
...
Either Boost or Linux really doesn't like it if you ftruncate() shared
memory down to 0 bytes.
2021-07-17 22:01:29 +02:00
Robbert van der Helm
f43e9c2153
Only consider host windows with WM_STATE set
...
This is the same way (minus the mapping check part) that `xprop` and
`xwininfo` filter windows when clicking on them. REAPER's toplevel
window apparently doesn't process any keyboard input when the mouse
cursor is located outside of that window.
2021-07-17 21:05:27 +02:00
Robbert van der Helm
b99f03cf64
Rename topmost_window to host_window
...
Since apparently to keep REAPER happy we shouldn't take the _very_
topmost window.
2021-07-17 19:11:29 +02:00
Robbert van der Helm
e4f2e8c27f
Add a separate audio thread mutual recursion stack
...
This should fix #118 without breaking our _other_ workaround from
yabridge 3.4.0 to fix the issue where a plugin would freeze if it would
try to resize itself while at the same time it sent parameter changes
from the audio thread. (and both of these issues of course are caused by
the same JUCE bug)
2021-07-15 21:05:36 +02:00
Robbert van der Helm
1e0cf33eba
Use a recursive mutex for the Melda deadlock fix
...
This seems safer with the whole mutual recursion thing.
2021-07-15 16:01:47 +02:00
Robbert van der Helm
5f7fb2e2c3
Work around thread safety issue in Melda plugins
...
This is super difficult to trigger on purpose, but I did run into it at
least once just now so it seems like a good idea to at least make sure
that this doesn't happen.
2021-07-15 15:45:15 +02:00
Robbert van der Helm
f02341e77f
Fix focus handling when reopening REAPER FX window
...
REAPER initializes the plugin's editor first before reparenting the
parent window to the FX window, so our `topmost_window` didn't actually
refer to the FX window.
2021-07-15 14:21:50 +02:00
Robbert van der Helm
0c816b0046
Only ignore -Wmaybe-uninitialized on GCC
...
An ifdef sounds like a better approach than ignoring two additional
warnings.
2021-07-14 17:18:44 +02:00
Robbert van der Helm
f292158889
Silence some more clangd warnings
2021-07-14 17:11:27 +02:00
Robbert van der Helm
8b870a51b0
Remove unnecessary XDND proxy call
...
This was left over from the original implementation, before we had this
smart pointer-singleton hybrid thing. There's already a handle stored
inside of `Editor`.
2021-07-14 16:41:24 +02:00
Robbert van der Helm
764eb41da9
Remove fixme about Wine deleting windows twice
...
This should have been fixed as of yabridge 3.2.0 by adding doing a
reparent with a last second flush. Or at least, I haven't heard any
reports about this still being an issue.
2021-07-14 16:35:51 +02:00
Robbert van der Helm
591b2b9ceb
Also warn on version mismatch for VST2 plugins
2021-07-13 22:24:02 +02:00
Robbert van der Helm
5fc7acccd1
Show a notification on version mismatch
...
Between the plugin and the Wine plugin host application.
2021-07-13 22:14:31 +02:00
Robbert van der Helm
4013aea63a
Include the configuration as a dependency
...
Apparently this wasn't even supposed to work, so it's probably a good
idea to do it properly before things break.
2021-07-13 22:05:11 +02:00
Robbert van der Helm
3dfb17cf5e
Add suggestion to rerun sync after startup failure
2021-07-13 22:05:11 +02:00
Robbert van der Helm
d8215e4664
Allow cancelling the drag-and-drop with Escape
2021-07-12 22:58:24 +02:00
Robbert van der Helm
2ebefb1280
Send an escape key press instead of WM_QUIT
...
This should allow the drag-and-drop operation to quit gracefully.
2021-07-12 21:36:08 +02:00
Robbert van der Helm
bbb84cdf2c
Remove spurious drag-and-drop tracker WM_QUIT
...
We don't want to cancel the plugin's own drag-and-drop, oops.
2021-07-12 21:17:12 +02:00
Robbert van der Helm
96fb53be8f
Fix the CAS in the XDND check
...
Oops. We were doing the opposite of what we wanted, which caused the
first drag to always fail.
2021-07-12 14:00:48 +02:00
Robbert van der Helm
ad4fb1a0ec
Don't define X11 error throwing macro in DND proxy
...
We didn't need this after all because we don't integrate with the
editor's X11 event loop.
2021-07-12 13:35:10 +02:00
Robbert van der Helm
2f8bb7ef06
Only allow a single XDND operation at a time
...
MT-PowerDrumkit apparently cancels its drag-and-drop operations and then
immediately starts a new one.
2021-07-12 12:35:07 +02:00
Robbert van der Helm
a478436af6
Make sure the Windows dnd operation terminates
...
I've seen a weird edge case where this doesn't happen once, but i
haven't been able to reproduce it. Hopefully this fixes it.
2021-07-12 12:21:52 +02:00
Robbert van der Helm
11d3ec9010
Also change cursor with the last status message
...
The idea was that you wouldn't be able to see it anyways, but it feels
better this way.
2021-07-11 21:40:42 +02:00
Robbert van der Helm
4d74963e0a
Flush any spooled XDND messages
...
The last position change message would never reach REAPER under when
using certain plugins because we forgot the flush.
2021-07-11 21:35:39 +02:00
Robbert van der Helm
1b4c4ecfad
Remove old warning
2021-07-11 19:43:53 +02:00
Robbert van der Helm
c968a357f6
Fall back to HDROP with empty format enumerator
...
This happens with MeldaProduction plugins.
2021-07-11 19:29:15 +02:00
Robbert van der Helm
b1b47ec80d
Allow dragging to the right and bottom of plugins
2021-07-11 18:48:32 +02:00
Robbert van der Helm
ca5a7b2b96
Continue polling while LMB is held
...
Instead of while the tracker window is alive. Technically the plugin may
clean up their files after the tracker window is gone, but in practice I
haven't seen it happen.
2021-07-11 18:34:26 +02:00
Robbert van der Helm
d21073f866
Escape spaces in URI encoding
2021-07-11 17:24:53 +02:00
Robbert van der Helm
312debc447
URL encode paths in XDND text/uri-list
...
This should fix drag-and-drop in Bitwig.
2021-07-11 17:21:35 +02:00
Robbert van der Helm
d7dc0529a8
URL encode paths in desktop notifications
2021-07-11 17:19:48 +02:00
Robbert van der Helm
83951200bb
Add a function for URL encoding file paths
2021-07-11 17:19:45 +02:00
Robbert van der Helm
64fbabd8ce
Canonicalize paths during drag-and-drop
...
Otherwise we will get a path from somewhere in `$WINEPREFIX/dosdevices`.
2021-07-11 17:03:53 +02:00
Robbert van der Helm
bfaac67cbc
End every URI with a line feed
...
Bitwig requires this.
2021-07-11 16:53:38 +02:00
Robbert van der Helm
8d94abb257
Only send the drop once
...
Oops.
2021-07-11 16:30:28 +02:00
Robbert van der Helm
a12215de3c
Fix URI list length
...
Apparently you're _not_ supposed to count the trailing lien feed. This
would cause REAPER to freeze.
2021-07-11 16:30:21 +02:00
Robbert van der Helm
8e29b5edf3
Make sure the drop actually goes through
...
The whole dropping code was nested in the wrong loop (oops), and we also
forgot to send any last spooled messages. We now also use a pair of
booleans instead of an optional boolean here because it makes the
conditionals a bit more readable.
2021-07-11 15:55:34 +02:00
Robbert van der Helm
f6d661cd35
Fix the timeout
2021-07-11 15:28:14 +02:00
Robbert van der Helm
7bac138240
Spool XdndPosition messages
...
In accordance to the spec.
2021-07-11 15:28:01 +02:00
Robbert van der Helm
0e0b120eda
Perform the actual drop after releasing the button
2021-07-11 15:13:32 +02:00
Robbert van der Helm
8fc1097f84
Change cursor depending on XdndStatus
2021-07-11 14:32:48 +02:00
Robbert van der Helm
4e67fa9212
Fetch atoms for the remaining two XDND messages
...
We're going to need these anyways.
2021-07-11 14:14:02 +02:00
Robbert van der Helm
7b5810ae57
Listen for XdndStatus
2021-07-11 14:12:35 +02:00
Robbert van der Helm
2671511dc0
Handle ConvertSelection for XDND
2021-07-11 14:05:09 +02:00
Robbert van der Helm
b6fd0405fb
Transform the file list into text/uri-list format
2021-07-11 13:20:36 +02:00
Robbert van der Helm
6f3beca32a
Send XdndPosition messages
2021-07-11 12:34:04 +02:00
Robbert van der Helm
eac9f9433b
Clean up X11 client message functions
...
clang-tidy would warn about all parameters being the same, which is
true, but that's kind of the point here.
2021-07-11 12:15:30 +02:00
Robbert van der Helm
e0ff16cd16
Fix XDND transition state when leaving window
...
Just resetting the last window is of course not enough here. I think
Dolphin/Qt run into the same issue, because their drop seems to stick
when hovering over Emacs (or Emacs is to blame, which could very well be
the case here).
2021-07-11 12:12:02 +02:00
Robbert van der Helm
94125f9eab
Announce XdndEnter and XdndLeave
2021-07-10 23:50:39 +02:00
Robbert van der Helm
7d8a252301
Implement the function for sending XDND messages
2021-07-10 23:18:18 +02:00