Changeset 14996
- Timestamp:
- Sep 21, 2011, 11:37:57 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/source/cocoa-ide/cocoa-listener.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/cocoa-ide/cocoa-listener.lisp
r14904 r14996 248 248 249 249 (defclass cocoa-listener-process (process) 250 ((input-stream : reader cocoa-listener-process-input-stream)251 (output-stream : reader cocoa-listener-process-output-stream)250 ((input-stream :initarg :listener-input-stream :reader cocoa-listener-process-input-stream) 251 (output-stream :initarg :listener-output-stream :reader cocoa-listener-process-output-stream) 252 252 (backtrace-contexts :initform nil 253 253 :accessor cocoa-listener-process-backtrace-contexts) 254 (window : reader cocoa-listener-process-window :initform nil)))254 (window :initarg :listener-window :reader cocoa-listener-process-window))) 255 255 256 256 (defloadvar *first-listener* t) 257 257 258 (defun new-cocoa-listener-process (procname window )258 (defun new-cocoa-listener-process (procname window &key (class 'cocoa-listener-process) initargs) 259 259 (declare (special *standalone-cocoa-ide*)) 260 260 (let* ((input-stream (make-instance 'cocoa-listener-input-stream)) 261 261 (output-stream (make-instance 'cocoa-listener-output-stream 262 :hemlock-view (hemlock-view window))) 263 264 (proc 265 (ccl::make-mcl-listener-process 266 procname 267 input-stream 268 output-stream 269 ;; cleanup function 270 #'(lambda () 271 (mapcar #'(lambda (buf) 272 (when (eq (buffer-process buf) *current-process*) 273 (let ((doc (hi::buffer-document buf))) 274 (when doc 275 (setf (hemlock-document-process doc) nil) ;; so #/close doesn't kill it. 276 (#/performSelectorOnMainThread:withObject:waitUntilDone: 277 doc 278 (@selector #/close) 279 +null-ptr+ 280 nil))))) 281 hi:*buffer-list*)) 282 :initial-function 283 #'(lambda () 284 (setq ccl::*listener-autorelease-pool* (create-autorelease-pool)) 285 (when (and *standalone-cocoa-ide* 286 (prog1 *first-listener* (setq *first-listener* nil))) 287 (ccl::startup-ccl (ccl::application-init-file ccl::*application*)) 288 (ui-object-note-package *nsapp* *package*)) 289 (ccl::listener-function)) 290 :echoing nil 291 :class 'cocoa-listener-process))) 292 (setf (slot-value proc 'input-stream) input-stream) 293 (setf (slot-value proc 'output-stream) output-stream) 294 (setf (slot-value proc 'window) window) 295 proc)) 262 :hemlock-view (hemlock-view window)))) 263 (ccl::make-mcl-listener-process 264 procname 265 input-stream 266 output-stream 267 ;; cleanup function 268 #'(lambda () 269 (mapcar #'(lambda (buf) 270 (when (eq (buffer-process buf) *current-process*) 271 (let ((doc (hi::buffer-document buf))) 272 (when doc 273 (setf (hemlock-document-process doc) nil) ;; so #/close doesn't kill it. 274 (#/performSelectorOnMainThread:withObject:waitUntilDone: 275 doc 276 (@selector #/close) 277 +null-ptr+ 278 nil))))) 279 hi:*buffer-list*)) 280 :initial-function 281 #'(lambda () 282 (setq ccl::*listener-autorelease-pool* (create-autorelease-pool)) 283 (when (and *standalone-cocoa-ide* 284 (prog1 *first-listener* (setq *first-listener* nil))) 285 (ccl::startup-ccl (ccl::application-init-file ccl::*application*)) 286 (ui-object-note-package *nsapp* *package*)) 287 (ccl::listener-function)) 288 :echoing nil 289 :class class 290 :initargs `(:listener-input-stream ,input-stream 291 :listener-output-stream ,output-stream 292 :listener-window ,window 293 ,@initargs)))) 296 294 297 295 (defclass hemlock-listener-frame (hemlock-frame)
Note:
See TracChangeset
for help on using the changeset viewer.
