DirectX swapchain flicker C++ - directx

I'm using DirectX to allow a user to 'color'/draw in a Win8 app. Much of the drawing code is similar to the Ink Drawing sample that MS has out.
Apologies for the length. I'm struggling to describe the problem briefly.
I'm having issues where, when the user draws a new line in live drawing mode with an InkStroke, that new line is invisible except for a segment being added (while the mouse is moving each finishing segment flashes and then disappears). When I release the mouse it joins my collection of Strokes which render as normal. That is, once you're done drawing a line what you tried drawing looks fine/visible/like you drew it.
I had this working fine as a stand alone C++ desktop app. However, I then connected the SwapChainPanel to an XAML page which also has a Menu. That was when the issue arose. They use the XAML menu to choose an image to color in and the page switches to 'drawing mode' with the desktop app code. The same SwapChainPanel handles context switching on the XAML page and with the drawing buffers.
I believe the problem lies in that the XAML page is using the same SwapChainPanel as the drawing buffers. This is interfering with a call "m_d3dContext->CopyResource(_currentBuffer.Get(), _previousBuffer.Get());" which is how the rest of older part of the 'currently being drawn' line is captured for drawing.
How can I get around this? Is there a solution which would not involve separating it into 2 XAML pages (one for menu, one for drawing), each with their own SwapChainPanel? Even if that is the best way, is there a way to do it with one XAML page?

Related

Windows Style Theming Makes Window Stutter When Dragged

I have investigated this problem across some different computers with theming/classic-theme and/or theme support disabled in my app...
Problem when Windows is configured to draw the window while dragged + theme drawing enabled:
My primary app window stutters greatly when dragged around screen. It is even so bad that if I drag the window e.g. 10 inches left and releases mouse button... The Window will then continue to move around the screen for 2-5 seconds more!
Speculation #1
I think the message queue may be flooded with paint-message related stuff meaning the move-messages get delayed? (which then again causes paints) Maybe some postmessage/sendmessage queuing going wrong.
What I have tried
I created some code that went through all controls in my form and disabled all events I could think of + called .Hide on them all -- this has no effect on the problem... However, I then created some code that went through all controls and removed them entirely -- this solves the problem if I remove say 50-80% of the controls.
Speculation #2
Is Windows draw style theming also done on controls not visible? (e.g. if placed on a TTabSheet not currently active?)
Other notes
In all honesty my form is very large (I spit out 7 different tools which all use most of it)
It is possible a TFrame based solution - as long as not loaded into memory - could solve this. But there are many problem in this... For one I have not abstracted reading e.g. options... I.e. I read myCheckbox.Checked to determine if a given option is enabled before passing it on my separated business logic.
But it is possible if I had a layer inbetween I could load TFrames as necessary... But it will be major work to convert to this.
...
Any ideas on how to workaround this? Reducing the problem is enough... I am thinking about:
a) Removing what I can.
b) Replacing what I can with stuff not style theme drawn. (E.g. "debug" controls I use myself to understand what is going on)
c) Maybe loading some stuff in TFrame instead
d) Trying to figure out why invisible controls cause problems for the style theme drawing... Could I have them ignored somehow?
e) Disable themning while drawing?
f) Disable having window drawn while dragged even if Windows is configured to draw Windows while they are being dragged.
g) WM_WINDOWPOSCHANGING / WM_WINDOWPOSCHANGED and disable align + draw while it happens.

Openlayers-3 forEachFeatureAtPixel slightly offset

I'm currently using 3.6.0 and I'm finding that, as features are placed from left to right on the map that features further to the right seem to be offset from their icons - if I place my mouse directly over the graphic feature the mouse cursor (which is wired up to forEachFeatureAtPixel()) does not change until it is moved to the left of the feature icon. On the left of the screen they line up, but it drifts going right until features on the right are completely out of sync.
Any ideas? I thought it may be the library, but I've just rolled back to 3.4.0 and it was the same.
Could this be layout outside of the map canvas bumping items across the screen?
I had the same issue for about a month but in my particular case the problem originated because I was rendering the map while showing a loading panel in front of it wich had a style that caused the web browser to display the scrollbars.
Upon load completion, hiding the loading panel also removed the scrollbar but somehow the map itself didn't refresh properly.
All I had to do was to force map to recalculate the viewport size using the map.updateSize()
http://openlayers.org/en/v3.14.0/apidoc/ol.Map.html#updateSize

Rotate/Resize Controls behave unexpectedly when JQueryUI widgets are used with Fabric.js

I just discovered Fabric.js and though the documentation is a lacking a bit, it seems like it will handle everything I need for an HTML-based Dream Board tool I'm building. It appears that it doesn't play well with JQueryUI, though.
When I set any of my objects to be JQueryUI widgets, button, dialog box, etc...the control handles seem to be non responsive on the top half of my canvas items, and even on the bottom, the hit areas for resizing/rotating are greatly reduced, which makes the items hard to manipulate. Has anyone run into this? Is this a known issue? I checked github and have tried to search SO to no avail.
Thank you!
http://seismicdevelopment.com/test/no-jquery-uis.html - No JQuery UI Widgets...behaves how I'd expect.
http://seismicdevelopment.com/test/with-jquery-uis.html - Click 'Add Image', you'll get an image, but compared to the other page, you'll notice that the corners of the image aren't as interactive...you can move the image ok, but rotating and scaling is ver hit-or-miss.
The problem must be in offsets. jQueryUI is probably modifying height of those buttons, which moves canvas slightly down, comparing to how it was during initialization.
I explained this — and why it happens in Fabric — in more detail here.

Delphi: Right aligned panel flickers upon resizing form

it should be simple but I don't find how to do it.
I create a form with a right aligned panel that I color in blue for example.
If I grab my forms left edge and resize it back and forth horizontally quickly, I would like the right panel not to move or flicker. As its position is unchanged, there is no reason why it should not stay completely steady. Does anybody know a simple trick to solve this apparently simple problem?
Thanks
This is just a fact of life with Windows GUI apps. You can see the same effect in a WinForms app and indeed even in mainstream Windows apps. For example, open an Explorer window and do exactly the same operation, resize by grabbing the left hand edge of the window. You will see exactly the same effect. You can see the same effect by resizing from any edge. Word and Excel behave in the same way.
My guess is that Windows repaints in the sizing loop before it sends the resizing message that allows the app to realign its controls.

Is Flash Player "Low quality" setting only about anti-aliasing?

It not just my curiosity, recently I've received a bugreport concerning one of my AS3 applications. This bug can be reproduced only if the quality in flash player is set to LOW (HIGH/MEDIUM - everything is ok). The bug changes the application behaviour, but it's a mystery for me, why it happens only for LOW quality while quality is said to influence rendering and visual appearance, not the code or behaviour.
Briefly, I have a menu panel (MovieClip) with several items (also MovieClips). Very simple, it appears on a screen after a MouseEvent and a user moves a cursor from one element down to another. When the cursor reaches the edge of the second item, the menu suddenly disappears.
In my code panel hiding is set on mouse click or mouse out.
Personally, I think, that the problem is in Tweener, I have to use that old piece of code. The menu panel is shown when mouse is above a user icon, and concurrently with the help of Tweener I produce some simple effects on this icon.
I have explored adobe and firefox (my app is for web browsers and the bug is reported for firefox) bugtrackers, but so far I have found nothing. Maybe misbehaviour of flash player 11 with Arrays, already fixed... I've run out of ideas.
From the docs:
LOW
Specifies low rendering quality: graphics are not anti-aliased, and bitmaps are not smoothed.
If it only happens when rendering it set to low, then it's probably a timing issue - i.e., the bug has always been there, but because you're wrapping up rendering earlier, you can trigger then bug. Is the bug reporter's computer a slow one? Is there a lot happening at once? Is the menu being removed, set to invisible, or repositioned?
Like #jeremynealbrown said, try and separate out your class to a simple project to make sure there's nothing wrong with your logic there.
Another method, override the removeChild() method, and visible and x and y properties to see which one is setting it, then put traces before all calls that call these to see what's triggering it.
If you think the problem is in Tweener, add a MOUSE_OVER listener to the menu panel that calls something like removeAllTweens(), no matter the state of the menu panel. If the bug doesn't happen anymore, this will show you that it's related to the tween engine.

Resources