OK, this might be a very specific question, but I am seriously stuck.
I have an Adobe Air desktop app which runs fullscreen on a Dell Inspiron Touch PC (OS is Win8). The interaction involves some dragging with the finger/mouse.
Edit: I use Air 3.8
Here's my problem: when operated with the mouse, everything works fine and smooth, on this computer and on every other PC I tested it on. But with touch input everything becomes obviously laggy.
When operated by touch, the OS shows a dot which indicates the current position of the recognized finger. When the finger is moved around, this OS output is significantly more responsive than the Air app, where dragging takes longer and lags. So I assume that the problem lies in delivering the touch events to the app.
What I have tried:
setting different values for MultiTouch.inputMode, assuming that
MultiTouchInputMode.NONE would be the most performant
installing a new driver for touch input
setting the mouse speed of the OS to "high"
setting the touch area size of the OS to "small"
Nothing did have an impact, and I am out of guesses…
Does someone have an idea or even experience with this stuff?
Thanks!
Because I had very little time and had to find a solution very quickly (it was a kiosk app for an event), I chose this alternative which worked perfectly: I made a flash file that is shown in the browser in fullscreen. No lag, no performance issues at all. I still don't know what caused this behavior though. No time…
Related
Does anybody have an educated guess into why my iMac 10.9.5. Mavericks is making a high-pitched sound when I am viewing samples of processes? Latest to do this was a sample of font daemon "fontd" run by atsserver (apple type service server).
It seems very weird since, if I drag the window of the sample so that it is not visible on the screen, the high pitch noise stops – and immediately when I drag the window so that I can see the sampled text, the sound comes back. The pitch is very high, somewhere around 18kHz. Many times it seems the samples that make the noise seem to have the DataDetectorsCore associated.
The sound only comes when viewing the sample of the process in the Activity Monitor. So if I save it as text and view it then, the sound is not there.
What could be going on here?
Thank you for any good guesses!
I've built a small Cocoa app that uses OpenGL to draw some light content. I've used CAOpenGLLayer. While the app itself is very small and works blazingly fast, the launch time of the app is not satisfactory at all. At random times the app would stall for about a second or two upon launch, before showing the content.
I've narrowed down the problem and found that the bottleneck is the CGLChoosePixelFormat() function that is called during OpenGL initialization. It literally takes ~1 second to execute.
For a clean experiment, I created a blank Cocoa app and added an NSOpenGLView to the window. Immediately, the app launch time has grown by 1-2 seconds, for the same reason.
Is there a way to fight this problem? There seems no way to avoid using CGLChoosePixelFormat(), it's essential for getting OpenGL to work on a Mac.
Also, it's said that Core Animation is built upon OpenGL under the hood, but my Core Animation apps do not exhibit this slow startup problem at all. Also, I tried a symbolic breakpoint on CGLChoosePixelFormat in a Core Animation app, but it doesn't trigger. So Core Animation is either not using OpenGL or there is a way to initialize it in a different way. Does anybody has a solution?
P.S. I know Metal is now the way to go for 3D graphics on Macs, but I need to do this particular project on OpenGL for backward compatibility reasons.
I've met the exactly same problem with you. So far I've found that the problem only occurs on MacBook Pro 16" 2019.
Since this problem is hard to reproduce, I can do nothing more than guess. For now I have changed the NSOpenGLPixelFormat initWithAttributes: method to [NSOpenGLView defaultPixelFormat], and hope it will work.
I am working on a project using SpriteKit to present simple shapes (SKShapeNode and SKSpriteNode) on the screen and move these shapes around in a predefined way.
I am interested in obtaining a very smooth motion, even for fast moving shapes (The code runs smooth for a couple of hundreds shapes and most of the time I only need less than 10).
I am quite satisfied with the motion smoothness for slowly moving objects on my macbook air and imac (60Hz displays and 60fps reported by showFPS in the SKView), however fast moving shapes create artefacts.
For that reason I would like to display the scene on a 120Hz monitor. I have scoured stackoverflow for a solution and only found solution to reduce the framerate from 60fps to 30 and 15 fps using frameInterval, but I haven't worked out how to obtain something higher than 60fps.
I have tried connecting my mac to a 85Hz CRT monitor (refresh rate set up in System Preferences to 85Hz), but my SKView still runs at 60fps.
Is there a way to access the EDID information of the monitor programmatically through SpriteKit? Is it possible to run an SKView at more than 60fps?
Thanks in advance
I like to make an overlay with the following properties:
should work at least on Windows 8.1
should be on top on everything, like a mouse cursor
should incorporate the pixels which are already on the background, like a blur filter
no flickering
Details to each of this points:
1) I assume that WDM is activated and DirectX 11.2 is used. Sure it would be nice to have it working on other Windows versions but this has no priority.
2) The problem is that with simply using the WS_EX_TOPMOST, menus from applications are over my overlay. In my case this really hurts as I like to display something with the same properties as a cursor. Imagine that a cursor suddenly is hidden if you open a menu -> unacceptable.
3) I like to read the pixels from the Windows desktop, including any effect Windows applies (like blur), and use this information for my filter. If I add my overlay, as described in 2, I should be able to get a fresh unobstructed copy of the background in the next frame and not read out my own overlay.
4) If I just write something into the Windows desktop directly, it gets overwritten immediately on the next frame by Windows itself. This is not acceptable.
One example of such an application is a magnifying glass, which exactly has all the properties I need. But for this case Windows 8.1 has an API. In contrast I like to write a program which displays a hand on the desktop (which is controlled by Leap Motion) which influences the Windows desktop, so you almost "feel" how you move your hand over the desktop.
If I write a tiny DirectX and/or OpenGL application for myself this is all very easy:
render all the regular stuff to a texture
use this texture for a post processing filter and add all my stuff on top of it
render just a quad to the back buffer
But I like to do that for the whole Windows desktop.
I found many different application, but they are to no use for me:
application which claim to be on top, are still behind menus. This normally doesn't really hurt, but is unacceptable for a cursor-alike thing
screen capturing programs which hook them self in all running programs are nice, but I want to hook myself into WDM
normally screen capturing programs do not draw anything into the back buffer, so they get every frame a new unobstructed back buffer
My questions can be boiled down to: How can I write my own magnifying glass for Windows 8.1.
I fear that my only serious option is to hook myself into WDM, what I try to avoid.
I'm happy to hear any idea how to achieve this, or hints to application which are doing what I describe.
In a project that I am currently working on I have an transparent NSWindow overlayed on a QTMovieView. At certain points I slide a custom view into this child window with animation so that it is displayed over the movie for a short period of time. The only odd behavior is that the animation is smooth on a Mac Book Pro but on a Mac Book(Same OS-X Version) there is significant flicker. The flicker only occurs on the portion of the window that has the actual QTMovie behind it.
Has anyone seen this behavior before or found a way to work around it?
The older MacBooks don't have real video hardware and used shared memory, so it's probably an issue with a slow video card trying to update # 30fps. Have you tried smaller movies to see if the issue goes away?
You may be better off with a pipeline like in the QTCoreVideo101 sample code from Apple. That would be a bit more work, you'd have to take care of the animation yourself, but you would get ultimate control over what is being drawn.