You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My app wants to change the cursor when the mouse moves into a view in my Appkit-alike framework when the user has selected an icon in the collection view at the bottom.
On the built-in-to-the-laptop screen, the below code works perfectly every time. On either of the 2 external monitors plugged in, it works maybe 2-5% of the time (and once it's not working it seems to stay not working for the duration of the app). I can't find anything that correlates to it "working" on the external monitors.
- (void) _setCursor
{
NSLog(@"setting cursor");
if (_cursor)
SDL_DestroyCursor(_cursor);
if (_cursorImage == nil)
SDL_Log("no image!");
SDL_SetCursor(_arrowCursor);
else
{
int W = _cursorImage.width * _zoomFactor[_zoom];
int H = _cursorImage.height * _zoomFactor[_zoom];
SDL_Surface *scaled = SDL_CreateSurface(W, H, SDL_PIXELFORMAT_ABGR8888);
id<AZRenderer> azr = AZRenderer.renderer;
SDL_Surface *surface = [azr surfaceFor:_cursorImage.texture];
SDL_Rect srcRect = SDL_RECT(_cursorImage.srcRect);
SDL_BlitSurfaceScaled(surface, &srcRect,
scaled, NULL,
SDL_SCALEMODE_LINEAR);
SDL_DestroySurface(surface);
_cursor = SDL_CreateColorCursor(scaled, 0, 0);
if (!SDL_SetCursor(_cursor))
SDL_Log("setcursor failed: %s", SDL_GetError());
SDL_DestroySurface(scaled);
}
}
The call to SDL_SetCursor always succeeds, and in fact it looks as though the cursor is being set on the external monitor, but as soon as I move the mouse, it is reset to the arrow again - see attached video. I did manage to capture the single frame when the mouse doesn't move for a while, and the cursor stayed set, but that was a large video to upload :)
sdl_setcursor.mov
I added logging to every call of SDL_SetCursor in my app, and it never calls anything other than the above. In the debugger, the values always look fine (which again agrees with the set-then-reset theory).
The text was updated successfully, but these errors were encountered:
My app wants to change the cursor when the mouse moves into a view in my Appkit-alike framework when the user has selected an icon in the collection view at the bottom.
On the built-in-to-the-laptop screen, the below code works perfectly every time. On either of the 2 external monitors plugged in, it works maybe 2-5% of the time (and once it's not working it seems to stay not working for the duration of the app). I can't find anything that correlates to it "working" on the external monitors.
The call to SDL_SetCursor always succeeds, and in fact it looks as though the cursor is being set on the external monitor, but as soon as I move the mouse, it is reset to the arrow again - see attached video. I did manage to capture the single frame when the mouse doesn't move for a while, and the cursor stayed set, but that was a large video to upload :)
sdl_setcursor.mov
I added logging to every call of SDL_SetCursor in my app, and it never calls anything other than the above. In the debugger, the values always look fine (which again agrees with the set-then-reset theory).
The text was updated successfully, but these errors were encountered: