libera/#clim - IRC Chatlog
Search
3:08:07
beach
Krystof: Yes, coordinate swizzling was designed to make that work with mirrored sheets. The X11 window created would have a limited size, and the sheet transformation(s) would be set up to do the right thing. But we have had trouble with that code.
3:08:08
beach
Plus, it turns out that sheets should not be mirrored unless they represent foreign gadgets. So we (or I thought we) got rid of most mirrored sheets so that only the top sheet is mirrored.
9:03:24
jackdaniel
while we have made from provisions to simplify the coordinate swizzling it is still indespensible for correctly representing nested mirrors; we've discussed it a few times before. clx works rather fine with a single mirror, but it is still not a default choice
9:04:14
jackdaniel
now, let me try to reproduce the issue, perhaps it is time to swallow the pillow and throw the repaint queue into the mix
9:06:45
jackdaniel
now, do we talk about "we don't need it because we want a single mirror by default" or do we talk about fulfilling requirements of the specification?
9:07:15
jackdaniel
because clim allows the programmer to define their own pane that is mirrored (by inheriting from specific mixins)
9:07:22
beach
But thanks for the explanation. I now understand why the problem resembles that of coordinate swizzling. Because it is the same problem. :)
9:08:53
jackdaniel
I'm aware that there is something fishy, because john-o-carroll reported a similar issue I could not reproduce
9:10:28
jackdaniel
my suspiction is that some x11 instances may have a bug and some not regarding changing the xlib:window geometry or clearing it
9:12:22
jackdaniel
sure, but I might have misunderstood the issue, that's why I'm showing what I did
9:14:42
jackdaniel
that said, it is not certain that the issue is related to coordinate swizzling and multiple mirrors (however it is a most likely suspect)
9:18:12
jackdaniel
(setf clim:*default-server-path* '(:clx-ttf :mirroring :single)) ;; and that you did not forget that :clx-ttf is a keyword?
9:22:25
jackdaniel
perhaps I'll install in a virtual machine some generic os and try to reproduce there
9:23:30
jackdaniel
it is a good idea to have .~/.mcclim-init.lisp but McCLM doesn't read such files right now
9:25:29
jackdaniel
slightly off topic, but I've been thinking for a while now about virtual file system inside the lisp runtime, then we could use all file functions on in-memory data. I hope that I'll have time to make it work in ecl some day
9:34:35
beach
Clouseau scrolling is pretty slow though. Not sure whether that's specific to Clouseau or not.
9:39:27
beach
What you just said makes me think it is the solution to several problems, including the slowness of displaying all those lines.
9:39:28
jackdaniel
the apparent slowness is also a result (perhaps a regression) of something I've changed some time ago - we force the sheet repaint when the geometry changes (not only dispatch the repaint)
9:40:20
jackdaniel
(consider i.e an interactive operation in the listener (ql:quickload 'whatever) - it would be desired to see the output not only after the system is fully loaded)
9:51:16
jackdaniel
n.b regarding double buffering, the macro with-output-buffered is part of the specification (not that it is implemented)
9:52:20
jackdaniel
right. I have a prototype implementation in one of my branches, but I'm not sure if that approach is the right thing
9:52:42
jackdaniel
also using such macro would be slightly with odds with the fixed framerate approach
9:53:27
jackdaniel
but leaving the programmer with control when to "flush" their complicated drawing make sense to, even if not by default
9:53:52
jackdaniel
i.e (with-output-buffered (medium) (some-lenghy-operation)) would give them a separate pixmap to draw on
10:26:30
john-a-carroll
jackdaniel: was the display issue meant to go away with (setq clim:*default-server-path* '(:clx-fb :mirroring :single)) ?
10:26:41
john-a-carroll
I'm running macOS / XQuartz 2.8.1 and with that *default-server-path* I still get glitches: http://users.sussex.ac.uk/~johnca/scroll-test-it.webm
10:27:29
jackdaniel
it went away for beach, as I've said I don't observe on my desktop the problem. I'm considering starting it in vm to reproduce and investigate
10:30:32
john-a-carroll
Hmm. Possibly it's timing-related because for me the glitches appear in different places each time
10:34:34
john-a-carroll
For me, it looks a bit like random-nick's https://0x0.st/-xP5.webm but not quite as bad
10:41:04
jackdaniel
speaking of repainting, one issue with this is the fact that drei confuses redisplay and repaint (basically having a single implementation for both) and its functions are not reentrant
10:41:34
jackdaniel
so when you call repaint from inside display function on a drei pane you may have very interesting results, including error buffer popping up
10:47:01
jackdaniel
that's fine; but I'd also like to have a solid implementation of a plain text-field and text-editor panes in core
10:47:28
jackdaniel
(by plain I don't mean simplistic, I mean - with narrowed scope of functionality to bare minimum)
13:38:12
random-nick
jackdaniel: I tested in a fresh archlinux vm, and the bug does seem to be dependent on the desktop environment
13:38:36
random-nick
it appears on kde and gnome on wayland (where mcclim is presumably running via xwayland)
13:39:12
random-nick
as for xfce4, it appears when display compositing is on but disappears when display compositing is off
13:40:18
random-nick
so it seems to be dependent on the window manager (or more likely, the window manager's compositor)
13:40:24
jackdaniel
I have xfce4 with compositing (but no wayland) and no visible defect; thanks for the hint
13:49:25
random-nick
jackdaniel: I just rebooted the vm with software graphics instead of paravirtualised graphics and the bug disappeared under xfce4
13:51:46
jackdaniel
i.e when I log in I can choose between various options, like xfce4, gnome classic, gnome wayland
13:54:38
jackdaniel
well, xquartz is something I can't check because apple seems to be reluctant to make their software available on "normal" virtual machines
13:56:36
jackdaniel
but then, it is not my fault I can't improve their customers experience for free ,-)
14:00:14
random-nick
I just tried kde on my host system (I have amd graphics) and the bug does appear
14:10:00
random-nick
forgot to mention that the single mirror backend doesn't have the artifacts for me
14:11:42
jackdaniel
we may always pretend that there is no bug and take delight in implementing bezigon inclusion point test
14:14:00
beach
Maybe the single-mirror backend should be the default. People who write their own mirrored sheets may have to work a little bit harder then, but it would make life easier for most of us.
14:15:44
jackdaniel
I think that having single mirror by default in clx backend is fine. what's more, that does not stand in opposition to having inside sheets with their own mirror even if we default to that
14:17:21
jackdaniel
a correct implementation of the specification implies, that mirrored and unmirrored sheets may be interwened in the hierarchy
14:17:56
jackdaniel
when :mirroring :full is specified for the clx default port it only means, that the frame manager adds a mirrored-sheet-mixin to each created pane
14:18:20
jackdaniel
if you specify :mirroring :single, the frame manager won't do that, but if the pane is specified itself to have a mirror then it will have one
14:18:41
jackdaniel
what's more, for testing purposes I've also implemented a variant :mirroring :random
14:19:08
jackdaniel
and it also seems to work rather fine (although there are some corner cases that are not very gracefully handled)
14:32:41
jackdaniel
perhaps this may be because my machine is reasonably fast and something "catches up" to some other concurrent process