freenode/#clim - IRC Chatlog
Search
10:31:09
loke
scymtym: Hmm... How do I enable sb-sprof? Isn't it enabl;ed by default when compiling with --fancy?
10:31:57
scymtym
it should be built and installed in any configuration. (require 'sb-sprof) to load it
10:51:11
loke
That told me that I should not be creating a new ink object for each string being pritned
10:54:35
scymtym
and then the flamegraph gives very different insights compared to the flat/tree reports
10:55:43
loke
ACTION discovered that caching the ink objects doesn't work, that causes protocol errors on the Xlib level :-)
15:37:57
loke
If I don't have to reallocate the xrender objects every time I draw a string, performacnce is doubled.
15:44:35
loke
destroy-window is a not a generic function, so I can't attach an :AROUND method or anything like that
15:45:36
loke
The problem is that the xrender pictures are logically attached to the window in my code, but they are not part of it from the Xlib point of view
15:48:13
loke
but... I'm thinking that instead of attaching the cached pictures to the window, I can attach them to the Display... After all, I _think_ they are compatible.
15:48:46
loke
There would be a problem if you have an application opening windows on multiple screens, some of which have different bit depts. Then the xrender pictures wouldn't be compatible anymore.
15:49:57
loke
oleo: You never "map" a picture to a window. A picture is used as a storage medium for something that should be drawn to any window. It's a server-side image buffer.
15:50:59
oleo
from the server point of view they are offscreen memory, which are realized from time to time so to say
15:51:16
loke
Up until now, both pictures I need to render subpixel sampled text has been allocated in the beginning of every render-glyphs call, and freed at the end. I noticed drawing was slow so I did a benchmark: 50% time spent allocating just _one_ of those two pictures.
15:52:31
loke
oleo: Well, they're not realised. You draw the source image to one picture, then you draw the background to another, then you use these two images in an Xrender call to composite them with the actual window content.
15:57:40
loke
Now... the "pen" object (the one that holds the foreground colour) is created with a pixmap as its backing object. After creating that picture, the pixmap is freed.
15:58:15
loke
If it's freed when the X connection is closed, then I can just tie the cached pen to the XDisplay object and be done with it.
16:00:57
oleo
if you want to free the image, as in alter it or destroy it (like setting all bits to zero etc) then you have to have another pixmap of the same bounds, drawn onto the same window
16:03:46
loke
Yeah, that's not the issue. The problem is when/if the Xrender picture gets freed if I don't do it manually.
16:08:46
loke
So I'm going to assume that they understood it, and that the picture gets freed when the GC is dropped.
16:18:36
loke
Here: https://github.com/lokedhs/McCLIM/blob/freetype2/Extensions/fonts/freetype.lisp#L321