This program's display function recurses infinitely (display-function -> redisplay-frame-panes -> ... -> display-function), and control is never returned to the event loop. I'm surprised it worked in the past.
The only reliable technique I know to achieve animation in mcclim is to use a separate thread which loops calling sleep and sends an event to the application frame periodically. I've attached a version of your program using this technique.
(defpackage :mini (:use :clim :clim-extensions :clim-lisp)) (in-package :mini)
(let ((colors (list +red+ +green+))) (setf colors (nconc colors colors)) (defun display-function (frame pane) (draw-circle* pane 10 10 10 :ink (pop colors))))
(defun quit () (frame-exit *application-frame*))
(define-application-frame mini () () (:panes (display :application :display-function 'display-function :incremental-redisplay t) (quit :push-button :label "Quit" :activate-callback (lambda (x) (declare (ignore x)) (quit)))) (:layouts (defaults (vertically () display quit))))
(defun run-test (name) (run-frame-top-level (make-application-frame name)))
(defun start () (run-test 'mini) 0)
(defclass interrupt-event (climi::standard-event) ((fn :initarg :fn :reader fn-of)) (:default-initargs :sheet nil))
(defmethod handle-event (sheet (event interrupt-event)) (funcall (fn-of event)))
(defmethod run-frame-top-level :around ((mini mini) &key) (let ((running t)) (clim-sys:make-process (lambda () (loop while running do (sleep 0.50) (climi::event-queue-append (climi::frame-event-queue mini) (make-instance 'interrupt-event :fn (lambda () (redisplay-frame-panes mini))))))) (unwind-protect (call-next-method) (setf running nil))))