|
Bugzilla – Full Text Bug Listing |
| Summary: | Huge event leak in text editor | ||
|---|---|---|---|
| Product: | [Mono] MonoDevelop | Reporter: | Michael Hutchinson <mhutchinson> |
| Component: | texteditor | Assignee: | Michael Hutchinson <mhutchinson> |
| Status: | RESOLVED FIXED | QA Contact: | MD Bugs <monodevelop-bugs> |
| Severity: | Major | ||
| Priority: | P5 - None | ||
| Version: | SVN | ||
| Target Milestone: | --- | ||
| Hardware: | x86 | ||
| OS: | Mac OS X 10.6 | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
|
Description
Michael Hutchinson
2009-12-02 05:05:32 UTC
Note that the MonoDevelop.Ide.FindInFiles.SearchResultWidget also creates one of these on *every* cell render. This also appears to be the cause of the search slowdown that Alan reported the other day. MonoDevelop.SourceEditor.SearchAndReplaceWidget.StoreHistory causes the property service to send change events for *ALL* prefs, then every DefaultSourceEditorOptions updates each child option, and each child options causes every text editor instance to update all its settings from the SourceEditorOptions, including a syntax scheme change, which sets the widget's bg colour, which broadcasts to all the thousands of default styles. In other words: changing any one property on the property service => every text editor's DefaultSourceEditorOptions gets updated => updates all its properties, each of these emits a change event => text editor updates its syntax style, updates its own GTK+ style => style change event is broadcast to the thousands of event handlers that have accumulated This is fail on every level. I'll fix this. OK, I think I nailed it. Made closing the prefs dialog *much* faster too. The bug with the trace is Bug 543956. The problem seems to be triggered by CSharpTextEditorIndentation.KeyPress calling TextEditorProperties.get_IndentStyle () which called PropertyService.Set and set off the massive, leaky, indiscriminate change broadcast detailed above. |