Mercurial > dwindows
changeset 1425:1628bf383893
Changes to _dw_redraw() to prevent infinite recursion on OS/2, Win and Mac.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 03 Dec 2011 04:40:35 +0000 |
parents | 36d0e26a5dea |
children | dfd9f177c34c |
files | mac/dw.m os2/dw.c win/dw.c |
diffstat | 3 files changed, 19 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/mac/dw.m Sat Dec 03 03:40:48 2011 +0000 +++ b/mac/dw.m Sat Dec 03 04:40:35 2011 +0000 @@ -155,15 +155,16 @@ void _dw_redraw(id window, int skip) { static id lastwindow = nil; + id redraw = lastwindow; if(skip && window == nil) - return; - - if(lastwindow != window && lastwindow != nil) - { - dw_window_redraw(lastwindow); - } + return; + lastwindow = window; + if(redraw != lastwindow && redraw != nil) + { + dw_window_redraw(redraw); + } } SignalHandler *_get_handler(HWND window, int messageid)
--- a/os2/dw.c Sat Dec 03 03:40:48 2011 +0000 +++ b/os2/dw.c Sat Dec 03 04:40:35 2011 +0000 @@ -238,15 +238,16 @@ void _dw_redraw(HWND window, int skip) { static HWND lastwindow = 0; + HWND redraw = lastwindow; if(skip && !window) - return; - - if(lastwindow != window && lastwindow) + return; + + lastwindow = window; + if(redraw != lastwindow && redraw) { - dw_window_redraw(lastwindow); + dw_window_redraw(redraw); } - lastwindow = window; } /* Find the desktop window handle */
--- a/win/dw.c Sat Dec 03 03:40:48 2011 +0000 +++ b/win/dw.c Sat Dec 03 04:40:35 2011 +0000 @@ -186,15 +186,16 @@ void _dw_redraw(HWND window, int skip) { static HWND lastwindow = 0; + HWND redraw = lastwindow; if(skip && !window) - return; - - if(lastwindow != window && lastwindow) + return; + + lastwindow = window; + if(redraw != lastwindow && redraw) { - dw_window_redraw(lastwindow); + dw_window_redraw(redraw); } - lastwindow = window; } typedef struct _sighandler