<html>
<head>
<base href="https://bugzilla.gnome.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - Wrong (ultra tiny/small) cursor size on HiDPI screen"
href="https://bugzilla.gnome.org/show_bug.cgi?id=744932#c42">Comment # 42</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - Wrong (ultra tiny/small) cursor size on HiDPI screen"
href="https://bugzilla.gnome.org/show_bug.cgi?id=744932">bug 744932</a>
from <span class="vcard"><a href="page.cgi?id=describeuser.html&login=otaylor%40redhat.com" title="Owen Taylor <otaylor@redhat.com>"> <span class="fn">Owen Taylor</span></a>
</span></b>
<pre>(In reply to Jonas Ã…dahl from <a href="show_bug.cgi?id=744932#c39">comment #39</a>)
<span class="quote">> > That all being said I have some specific concerns about MetaCursorSprite vs.
> > MetaCursorSpriteWayland.
> >
> > MetaCursorSprite, as I understand it, is basically similar to
> > MetaCursorReference - it's basically a union of different ways to specify
> > the appearance of a cursor. A wayland-specific subclass of this might make
> > sense so that it can store along with the appearance a pointer back to a
> > Wayland object. But a Wayland specific subclass shouldn't gain entirely new
> > capabilities like looking going out and looking at where it is relative to
> > the monitors and reloading the theme image at a different size.
> >
> > I feel like the parent class is fur, and the subclass is a cat!
>
> That might be because when an X CM, the cat lives in the X server, but in
> Wayland we are the cat.</span >
I don't want to push metaphors too hard, but if we think that in the "X CM"
case, the cat is in the X server, then in that case, our object should still be
a cat, even if it's a remote control cat-shaped toy.
<span class="quote">> >
> > Things to think about for improving the design:
> >
> > - Do some pieces (like loading from the theme at a different size) work
> > better in the generic code, even if they are only ever used in the Wayland
> > case?
>
> This is why I put it in the Wayland object; it only ever makes sense do do
> it there.</span >
My suggestion is the opposite - sometimes it makes sense to do things in the
base class *even if they are only ever used in one subclass* - this can enhance
encapsulation, avoid unnecessary virtualization, or just make things make more
sense.
[...]
<span class="quote">> Maybe we should have such a abstraction, not calling it Wayland but "display
> server", and then hook wl_surface etc to it some other way and put it under
> a "protocols/" directory. Not sure what to call that though; its neither
> "winsys", "protocol" or "frontend".
>
> I.e. something like
>
> backends/
> x11/
> cm/
> nested/
> protocols/
> wayland/
> x11/
> xwayland/ (funky mix of the two above)
> "running mode"/
> x11_cm/
> display_server/
>
> ?
>
> MetaCursorSprite would go under "running mode"/ and under protocols we'd
> have a MetaWaylandCursor which interacts with MetaCursorSprite.</span >
Hmm, I think the directory organization is getting ahead of the code
organization. How do we replace the cases where we have
meta_is_wayland_compositor() conditionals? How do we move x11 and wayland
specific code out of common source files in core/ and compositor/? Having nice
clean subdirectories doesn't make sense if we can't move the relevant code
there.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>