|
|
Subject: freetype-cffi sorta works - msg#00042
List: lisp.mcclim.devel
I have the CFFI translation of freetype working at least a little (on ACL).
I am certainly NOT confident enough in it to say it ought to replace the
old one! But I would like to share the work, and I would like to see it
out there on common-lisp.net for people to examine and critique.
Here's what I have done: I have created shadows of all the original
files. So I have freetype-fonts-cffi.lisp, freetype-cffi.lisp,
freetype-package-cffi.lisp and mcclim-freetype-cffi.asd.
I would like to check these into the CVS, since they will not break the
existing mcclim-freetype. If you'd like to test the CFFI version, just
symlink <asdf-system-dir>/mcclim-freetype.asd to
mcclim-freetype-cffi.asd, then load as per the instructions for ordinary
mcclim-freetype.asd.
Please let me know if this for some reason would be a bad thing.
Otherwise I will make the commit in about 4-6 hours.
Thanks!
R
Was this page helpful?
Thread at a glance:
Previous Message by Date:
click to view message preview
execute-frame-command
Hi,
Is
(defun foo ()
(let ((frame (make-application-frame 'climacs)))
(clim-sys:make-process (lambda () (run-frame-top-level frame)))
(execute-frame-command frame `(com-find-file "/tmp/foo.txt"))))
expected to be "safe"? At present, this is subject to a race
condition, because the frame need not have been adopted properly by
the time the execute-frame-command runs, and so it need not have a
top-level sheet.
Would it be reasonable to guard against this in the branch of
execute-frame-command, and if so, how? There's a symmetric case
(which is probably less common) where the frame command is executed
just after the top-level sheet is disowned.
Any ideas? It would be nice to support something along the lines of
my FOO function above -- it seems like a natural expression of a
response to user action.
Cheers,
Christophe
Next Message by Date:
click to view message preview
Debugger, ESA, mcclim-freetype
Hi,
Today I observed a rather nasty interaction that I'm at a loss to
explain. If I wrap the CLIM Debugger around an Emacs-Style
Application which uses mcclim-freetype, and provoke an entry into that
debugger, I get X Length Errors. I think I need all three of those
elements: the clim debugger and listener work fine together; gsharp
and the clim debugger without freetype work fine; and of course the
applications work acceptably using freetype in normal operation and
with slime.
I am not sure whether this is specific to SBCL; nor am I sure whether
it is specific to threaded lisps; I haven't tried it with a
non-threaded system. The event queue process has a backtrace that
looks like
Backtrace:
(BACKTRACE-AS-LIST 200)
(DEBUGGER-HOOK #<XLIB:LENGTH-ERROR {10060EA641}> #)
(INVOKE-DEBUGGER #<XLIB:LENGTH-ERROR {10060EA641}>)
(CERROR "Ignore" XLIB:LENGTH-ERROR)
(XLIB::X-CERROR "Ignore" XLIB:LENGTH-ERROR :DISPLAY
#<XLIB:DISPLAY :0 (The X.Org Foundation R60802000)>
:ERROR-KEY XLIB:LENGTH-ERROR :ASYNCHRONOUS T
:CURRENT-SEQUENCE 1913 :MAJOR 154 :MINOR 25
:SEQUENCE 1563)
[...]
(XLIB:PROCESS-EVENT #<XLIB:DISPLAY :0 (The X.Org Foundation R60802000)>
:HANDLER # :TIMEOUT NIL :PEEK-P NIL :DISCARD-P T
:FORCE-OUTPUT-P T)
((SB-PCL::FAST-METHOD CLIM-BACKEND:GET-NEXT-EVENT #) #<unavailable argument>
#<unavailable argument>
#<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {10059661F1}>
(:WAIT-FUNCTION NIL :TIMEOUT NIL))
while the application thread (which /also/ gets a length error) has a
backtrace involving HANDLE-REPAINT on the menu-button-pane of the CLIM
Debugger, CLIM-CLX::FONT-DRAW-GLYPHS (MCCLIM-FREETYPE::FREETYPE-FACE
...), and a call to XLIB::DRAWABLE-DEPTH and XLIB::READ-REPLY.
Any ideas? Can anyone replicate any of this? Is there something in
the toplevel loop of ESA (or attendant methods) which could cause this
problem?
Cheers,
Christophe
Previous Message by Thread:
click to view message preview
execute-frame-command
Hi,
Is
(defun foo ()
(let ((frame (make-application-frame 'climacs)))
(clim-sys:make-process (lambda () (run-frame-top-level frame)))
(execute-frame-command frame `(com-find-file "/tmp/foo.txt"))))
expected to be "safe"? At present, this is subject to a race
condition, because the frame need not have been adopted properly by
the time the execute-frame-command runs, and so it need not have a
top-level sheet.
Would it be reasonable to guard against this in the branch of
execute-frame-command, and if so, how? There's a symmetric case
(which is probably less common) where the frame command is executed
just after the top-level sheet is disowned.
Any ideas? It would be nice to support something along the lines of
my FOO function above -- it seems like a natural expression of a
response to user action.
Cheers,
Christophe
Next Message by Thread:
click to view message preview
Debugger, ESA, mcclim-freetype
Hi,
Today I observed a rather nasty interaction that I'm at a loss to
explain. If I wrap the CLIM Debugger around an Emacs-Style
Application which uses mcclim-freetype, and provoke an entry into that
debugger, I get X Length Errors. I think I need all three of those
elements: the clim debugger and listener work fine together; gsharp
and the clim debugger without freetype work fine; and of course the
applications work acceptably using freetype in normal operation and
with slime.
I am not sure whether this is specific to SBCL; nor am I sure whether
it is specific to threaded lisps; I haven't tried it with a
non-threaded system. The event queue process has a backtrace that
looks like
Backtrace:
(BACKTRACE-AS-LIST 200)
(DEBUGGER-HOOK #<XLIB:LENGTH-ERROR {10060EA641}> #)
(INVOKE-DEBUGGER #<XLIB:LENGTH-ERROR {10060EA641}>)
(CERROR "Ignore" XLIB:LENGTH-ERROR)
(XLIB::X-CERROR "Ignore" XLIB:LENGTH-ERROR :DISPLAY
#<XLIB:DISPLAY :0 (The X.Org Foundation R60802000)>
:ERROR-KEY XLIB:LENGTH-ERROR :ASYNCHRONOUS T
:CURRENT-SEQUENCE 1913 :MAJOR 154 :MINOR 25
:SEQUENCE 1563)
[...]
(XLIB:PROCESS-EVENT #<XLIB:DISPLAY :0 (The X.Org Foundation R60802000)>
:HANDLER # :TIMEOUT NIL :PEEK-P NIL :DISCARD-P T
:FORCE-OUTPUT-P T)
((SB-PCL::FAST-METHOD CLIM-BACKEND:GET-NEXT-EVENT #) #<unavailable argument>
#<unavailable argument>
#<CLIM-CLX::CLX-PORT :HOST "" :DISPLAY-ID 0 {10059661F1}>
(:WAIT-FUNCTION NIL :TIMEOUT NIL))
while the application thread (which /also/ gets a length error) has a
backtrace involving HANDLE-REPAINT on the menu-button-pane of the CLIM
Debugger, CLIM-CLX::FONT-DRAW-GLYPHS (MCCLIM-FREETYPE::FREETYPE-FACE
...), and a call to XLIB::DRAWABLE-DEPTH and XLIB::READ-REPLY.
Any ideas? Can anyone replicate any of this? Is there something in
the toplevel loop of ESA (or attendant methods) which could cause this
problem?
Cheers,
Christophe
|
|