Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#1307 closed defect (fixed)

Cocoa IDE Listener output uninterruptible and too slow

Reported by: wws Owned by: wws
Priority: normal Milestone: Cocoa IDE v?
Component: IDE Version: trunk
Keywords: Cc:


This ticket is mostly so I have a ticket to which to attach the Cocoa IDE listener optimization I did for a customer project.

Listener output used to wait for the GUI thread to finish drawing a buffer full of text before being able to add more.

Change History (3)

comment:1 Changed 5 years ago by wws

  • Resolution set to fixed
  • Status changed from new to closed

(In [16524]) Radically speed up IDE listener output and make it interruptible.

The IDE listener output is now double-buffered. Printing threads fill one buffer, and the GUI thread empties the other.

To avoid me having to hurt my brain preventing deadlock, output from the GUI thread to an IDE listener is dropped on the floor; you'll never see it. Since it's unusual to output from the GUI thread to an IDE listener (the default is the AltConsole?, or, if you started CCL from a command-line shell, that shell), this shouldn't be a practical problem.

Fixes #1307.

comment:2 Changed 5 years ago by svspire

Duplicate of ticket:1198.

comment:3 Changed 5 years ago by wws

(In [16526]) Make HI::WITH-OUTPUT-TO-LISTENER work from the cocoa event process. Do this by saving the output in a string and doing the actual output via CCL:PROCESS-RUN-FUNCTION. This makes C-M, macroexpansion, work again.

refs #1307.

Note: See TracTickets for help on using tickets.