diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2006-06-06 08:00:56 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2006-06-06 08:00:56 +0000 |
| commit | 30786c2ed39ef0e8482b48b6663ffd99fb032ddd (patch) | |
| tree | 295b630bbc3de3d9c0639b11a2e69fd737a962ea /src/Fl_Double_Window.cxx | |
| parent | 587e1d170b1b7f0757d24cb44769b7af2993bf8d (diff) | |
STR #1310: OS X Quartz support fixed. All test codes now work without complaints fro Quickdraw or CoreGraphics. If no more major bugs are reported for Quartz, I will make Quartz the default over Quickdraw in the next release of FLTK 1.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5178 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Double_Window.cxx')
| -rw-r--r-- | src/Fl_Double_Window.cxx | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/Fl_Double_Window.cxx b/src/Fl_Double_Window.cxx index e1fa64e67..54fd2b935 100644 --- a/src/Fl_Double_Window.cxx +++ b/src/Fl_Double_Window.cxx @@ -219,12 +219,19 @@ void fl_delete_offscreen(Fl_Offscreen ctx) { free(data); } -static CGContextRef prev_gc = 0; -static Window prev_window = 0; +const int stack_max = 16; +static int stack_ix = 0; +static CGContextRef stack_gc[stack_max]; +static Window stack_window[stack_max]; void fl_begin_offscreen(Fl_Offscreen ctx) { - prev_gc = fl_gc; - prev_window = fl_window; + if (stack_ix<stack_max) { + stack_gc[stack_ix] = fl_gc; + stack_window[stack_ix] = fl_window; + } else + fprintf(stderr, "FLTK CGContext Stack overflow error\n"); + stack_ix++; + fl_gc = (CGContextRef)ctx; fl_window = 0; //fl_push_no_clip(); @@ -235,8 +242,14 @@ void fl_begin_offscreen(Fl_Offscreen ctx) { void fl_end_offscreen() { Fl_X::q_release_context(); //fl_pop_clip(); - fl_gc = prev_gc; - fl_window = prev_window; + if (stack_ix>0) + stack_ix--; + else + fprintf(stderr, "FLTK CGContext Stack underflow error\n"); + if (stack_ix<stack_max) { + fl_gc = stack_gc[stack_ix]; + fl_window = stack_window[stack_ix]; + } } extern void fl_restore_clip(); |
