forked from juce-framework/JUCE
-
Notifications
You must be signed in to change notification settings - Fork 0
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
[pull] master from juce-framework:master #21
Open
pull
wants to merge
2,033
commits into
kzantow-audio:master
Choose a base branch
from
juce-framework:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…e parameter The lineStride parameter is only required to be set when the 'data' pointer is also set.
…ies and opacity brushes Also switches to the slightly newer layer parameters type.
…less the transform is non-trivial Frequently, excludeClipRectangle will be called several times in a row, in order to trim away borders on each side of a rectangle. When this happens, we want to avoid creating geometric clip layers which exclude only two or three of the borders, and instead wait until all borders have been excluded before applying the clip list. This way, it may be possible to simplify the clip list to a single rectangle, which can be implemented using the faster axis-aligned clipping layer.
…hing multiple clip layers This issue could be seen when calling setBufferedToImage on a component with a transparent background with a size different to the component's size. The details are unclear to me, but it seems like both calling Clear on the device context, and using the COPY blend mode, ignore alpha values and instead use a constant alpha of 1.0 when there is a geometric clipping layer active. As a workaround for this issue, when clearing a rectangle we now pop all active layers, fill their intersection using the COPY blend mode while there are no layers active, and then reinstate the layers. The new implementation is likely to be very slow, however I think this code path is unlikely to be used frequently in practice. The main use-case for rendering clear transparent areas is the rendering of buffered component images, but such cases normally use axis-aligned clipping regions, which should be able to use the faster path.
…frontend library This fixes the behaviour of WebBrowserComponent based plugins, including the WebViewPluginDemo, when working with automations.
…ined number of steps Even for AudioParameterFloat.
… between JUCE and QJS types
…textContentAttributeName This fixes potential crashes when this static object is accessed from the constructors of other objects with static storage duration. A concrete example of this could be seen when running the following on Linux: static inline const Typeface::Ptr face = Typeface::createSystemTypefaceFor (...); Here, 'face' is a static data member of some class. Creating a system typeface on Linux will parse an XML document of system typefaces, eventually accessing juce_xmltextContentAttributeName.
Calling getInstance may recreate the list singleton if it has already been destroyed. This should only happen if a Typeface instance is being destroyed after the app/plugin has been shutdown, e.g. if the typeface has static storage duration.
This assertion was intended to emulate a performance warning that could be emitted by the D2D debug layer, but it often gets in the way during development. To check for this performance issue, users can change D2D1_DEBUG_LEVEL_NONE to D2D1_DEBUG_LEVEL_INFORMATION in juce_DirectX_windows.h
This additionally ensures that we'll paint when the swap chain has just been resized
…k to system implementation This allows for styles other than normal/bold/italic/bold-italic to be selected, and more closely matches the behaviour of font selection on other platforms.
This is more likely to place the regular/default style first in the list of styles.
…omponents For some transforms, the program could get stuck in the following loop: - The content component emits a resized/moved notification, leading to the initial call to Viewport::updateVisibleArea. - New positions are computed for the viewport scrollbars, and scrollbar listeners are notified synchronously that the scrollbars have been updated. - The viewport itself listens to the scrollbars, so it receives a notification and updates the position of the content component. - The scrollbar position (quantised to an integer) resolves to a component position (also quantised to an integer) that differs from the existing position, so the new position is applied. - The viewport now attempts to set the scrollbars to the correct position in response, and notifies listeners that the scrollbars have moved... Normally, the recursion would exit at the point where the component position is set to its current position. If we're unlucky, though, converting from view pos to scrollbar pos, then scrollbar pos back to view pos may result in a view pos that differs from the original value. This fix adds a new exit condition from the recursion. On receiving a scrollbar move notification, we check whether the scrollbar position computed from the current view position matches the incoming scrollbar position. If it does, there's no need to compute and apply a new view position from the incoming scrollbar position.
…contains This reverts 515e9b9. In order to avoid recursive calls through WM_NCHITTEST, we remove calls to Component::contains in DocumentWindow::findControlAtPoint.
…ON_ABORTED errors WebView2 can emit COREWEBVIEW2_WEB_ERROR_STATUS_CONNECTION_ABORTED errors during page navigation, even if the page navigation would happen correctly afterwards. In such situations our internal error handler can recursively encounter this error when trying to navigate to the error handler page. Prior to this commit the implementation could end up in an infinite loop receiving the error and then navigating to the error handler page.
All NSUserNotification related classes have been deprecated in MacOS 11, and this class will have to be revamped to use the new User Notifications framework. We are suppressing the warnings for the time being.
…where iOS 18 fails to apply non-power-of-2 sizes
…nsure correct buffer size detection on iOS 18 The waiting is only added on iOS 18 as this is the only platform where seems to be an asynchronous relationship between (1) AVAudioSession setActive: (2) AVAudioSession setPreferredIOBufferDuration: and (3) AVAudioSession.IOBufferDuration. The issue is not observable in the iOS 18 emulator.
We instead query from the renderer whether the current render size has changed since the last frame, and repaint the entire window if so.
Previously, IDXGISwapChain::Present was called on a background thread, which made it difficult to avoid race conditions. e.g. during a live-resize of a window, we would occasionally draw old incomplete frames instead of new frames at the correct size. The new approach moves the Present call to the main thread via AsyncUpdater. We attempt to present whenever the swap event wakes, and whenever a frame is drawn. Only a single Present call may be made after the swap event wakes. Subsequent Present calls will be ignored until the next time the swap event wakes.
Previously, building the DemoRunner on Ubuntu 18.04 failed due to a missing type declaration.
This fixes an issue where VST3 plugins failed to scan and load on Linux.
Partially reverts a change made in 362a1cc. The factory needs to be multithreading-enabled in order to support e.g. drawing to the screen on the main thread and drawing to an Image on a background thread, even when no resources other than the graphics device are shared between the two threads.
This is more likely to place the regular/default style first in the list of styles. This change partially reverts a behavioural change in 68d0ea9.
This fixes an issue where Direct2D will emit an error when using dirty rects on the first full frame after resizing. The issue isn't present on all hardware/drivers, but was observed on a Windows 11 computer with a 890M iGPU.
It looks like the old default accidentally went missing in db3c2c6.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )