Sweden-Number/dlls/winemac.drv
Ken Thomases fdd7db0593 winemac: Set windows to transparent until they have content to draw, to reduce flicker.
When a window is shown, it may not have drawn its content into the backing
surface, yet.  Cocoa will draw the window, starting with its standard light
gray background and then the content view.  However, the content view won't
have anything to draw, yet, though, so the window background is not drawn over.

A short while later, usually, the app will paint its content into the window
backing surface and Cocoa will be told to redraw the window.  This works, but
the user can often see the flash of the window background color first.  This
is especially visible for windows with dark content.

Part of the fix is to set the window background to transparent until the
content view has actually drawn once since the window was shown.

That's not sufficient on its own, though.  We had disabled Cocoa's automatic
display mechanism for windows and put display on a display-link timer.  This
meant that the window was not actually cleared to its transparent color.  When
the window was shown, the Window Server displayed a white backing buffer.  It
is the app process which should fill that backing buffer with clear color but,
because we had disabled auto-display, that wasn't getting done at the same
time the window was displayed.  It was happening some time after.  Again, the
result was a visible flicker of white.

So, we now temporarily re-enable auto-display just before showing a window.

Signed-off-by: Ken Thomases <ken@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-02 23:31:01 +09:00
..
.gitattributes
Makefile.in
clipboard.c
cocoa_app.h
cocoa_app.m winemac: Use a more idiomatic pattern for an autorelease pool around a loop. 2016-06-03 14:39:19 +09:00
cocoa_clipboard.m
cocoa_display.m winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
cocoa_event.h
cocoa_event.m winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
cocoa_main.m
cocoa_opengl.h winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
cocoa_opengl.m winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
cocoa_status_item.m
cocoa_window.h winemac: Set windows to transparent until they have content to draw, to reduce flicker. 2016-09-02 23:31:01 +09:00
cocoa_window.m winemac: Set windows to transparent until they have content to draw, to reduce flicker. 2016-09-02 23:31:01 +09:00
display.c winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
dragdrop.c
event.c
gdi.c winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
image.c
ime.c winemac.drv: Correct sizes in COMPOSITIONSTRING structure when updating fields. 2016-06-03 12:30:09 +09:00
keyboard.c
macdrv.h winemac: Mirror the hierarchy of Win32 child windows with Cocoa views. 2016-05-14 14:39:54 +09:00
macdrv_cocoa.h winemac: Change macdrv_create_view() to not add the new view to a window's content view. 2016-05-14 14:39:54 +09:00
macdrv_main.c winemac.drv: Added ThreadDetach entry point and use it instead of DllMain. 2016-08-27 13:24:06 +09:00
macdrv_res.h
mouse.c winemac: Use floor() rather than truncation when converting Cocoa event positions to integers. 2016-05-05 13:18:39 +09:00
opengl.c winemac.drv: Fix a typo in WARN() message. 2016-06-24 00:07:02 +09:00
surface.c winemac: Add support for a high-resolution ("Retina") rendering mode. 2016-05-06 11:45:24 +09:00
systray.c
window.c winemac: Trace when a window's per-pixel-alpha setting changes. 2016-09-02 23:30:52 +09:00
winemac.drv.spec winemac.drv: Added ThreadDetach entry point and use it instead of DllMain. 2016-08-27 13:24:06 +09:00
winemac.rc