Ticket #162 (closed defect: fixed)
CGContextRestoreGState: invalid context
| Reported by: | szabgab | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | editor | Version: | 0.39 |
| Keywords: | osx | Cc: |
Description
In #159 Chris Dolan mentioned
Exactly once per second, I get a new warning message on the console that says "CGContextRestoreGState: invalid context".
On Mac, Wx Version: 0.88 wxWidgets 2.8.8 using r1449
It seems this is related to this: http://trac.wxwidgets.org/ticket/4272
Attachments
Change History
comment:3 Changed 4 years ago by schwern
- Version changed from 0.19 to 0.39
Still a problem in 0.39. Let's install 0.46 and see...
I'm having difficulty getting Wx 0.91 or 0.92 to fully compile.
comment:4 Changed 2 years ago by szabgab
We are at 0.84 and have not heard about this issue recently. Could please check if it's still there?
comment:5 follow-up: ↓ 6 Changed 2 years ago by schwern
Sorry, I still can't compile Wx on OS X. See https://rt.cpan.org/Ticket/Display.html?id=66723
comment:6 in reply to: ↑ 5 Changed 23 months ago by tome
I can confirm this issue is still there on osx perl 5.14.1, Padre 0.87 (trunk r14962 Wx : .9901, wxw: 2.8.8)
<Error>: CGContextRestoreGState: invalid context 0x0
comment:8 Changed 22 months ago by tome
I can confirm this is occurring because of updates to the status bar during the EVT_STC_UPDATEUI, as is indicated in the widgets ticket: http://trac.wxwidgets.org/ticket/4272
For example if I move the update code out of the UPDATEUI and into an idle timer, we don't get that error.
Wx::Event::EVT_STC_UPDATEUI( $self, -1, sub {
shift->{_do_update_ui} = 1;
} );
Wx::Event::EVT_IDLE($self, sub {
my $self = shift;
if($self->{_do_update_ui}) {
$self->{_do_update_ui} = undef;
$self->on_stc_update_ui();
}
});
This is all new code to me but at least it's a start.
comment:9 Changed 22 months ago by bowtie
tome diff for above
-
lib/Padre/Wx/Main.pm
288 288 ); 289 289 290 290 # Scintilla Event Hooks 291 Wx::Event::EVT_STC_UPDATEUI( $self, -1, \&on_stc_update_ui ); 291 Wx::Event::EVT_STC_UPDATEUI( 292 $self, -1, 293 sub { 294 shift->{_do_update_ui} = 1; 295 } 296 ); 297 298 Wx::Event::EVT_IDLE( 299 $self, 300 sub { 301 my $self = shift; 302 if ( $self->{_do_update_ui} ) { 303 304 $self->{_do_update_ui} = undef; 305 $self->on_stc_update_ui(); 306 } 307 } 308 ); 309 310 # Wx::Event::EVT_STC_UPDATEUI( $self, -1, \&on_stc_update_ui ); 292 311 Wx::Event::EVT_STC_CHANGE( $self, -1, \&on_stc_change ); 293 312 Wx::Event::EVT_STC_STYLENEEDED( $self, -1, \&on_stc_style_needed ); 294 313 Wx::Event::EVT_STC_CHARADDED( $self, -1, \&on_stc_char_added );
Changed 22 months ago by tome
- Attachment diff.patch added
Patch to defer on_stc_update_ui to the idle after the event
comment:10 Changed 22 months ago by tome
I'm also now seeing these context warnings when doing fast swipe scrolling, so I'll need to figure out where that's coming from and if a more general solution should be implemented.
comment:11 Changed 22 months ago by tome
With r15298, there is now only one known case of this warning:
When using the default scintilla, we get this when scrolling to new lines.
After debugging and eliminating all the Padre calls, I believe this may be in the Wx's implementation. I'm hoping to find out more once I can, or when I get to chat with those folks again.
For now this bug is 1/2 fixed, but at least we don't see the warning on every single keystroke.
comment:12 Changed 14 months ago by azawawi
Close it? :)

Me too. Except it doesn't seem to be once per second but once per keystroke.
Wx Version: 0.89 wxWidgets 2.8.9
This is perl, v5.10.0 built for darwin-thread-multi-2level
Padre 0.27