It is a sunny day, somehow I got up early this morning. The cool, chilling breath of air reminded me we are at the tail of the summer. It felt so strange, this summer was like it was never here. Hiking, go swimming, taking a trips and night outs. all those experiences for a normal summer I would do, they are all absent, hope I don’t regret too much for crunching code at home all these months. It was a tough year actually, I was determined to push Taiwins to a usable state, it has been stressful. Every time I look at the pile of the TODO list, a sentiment of endless development and desperate hit me hard like a heart attack. I had to work a lot to stay healthy.
Here I am taking a clear picture of my memory from April. In the begining it was
only getting a window to show up, and getting wl_seat
to work, then I needed
to draw surfaces, that is implementing wl_surface
, binding textures from
wl_buffers
and paint them on the window, I had to writing dummy clients which
normally shouldn’t work because wl_surface
requires a “role” (like
xdg_toplevel
). Rigging up the surface transformation code so it rotates and
scale correctly. Boy, those transformations, I realised my understanding of
Inverse Matrix was not correct at all. Subsurfaces was developped along the way,
I didn’t even know the usage at the begining, until I read this
blog-post. Back
then when I was writing wayland client library, I needed not care about the
protocol I don’t understand, but now I have no choice now I guess. Then here we
go, the xdg_surface
. The one that gives you all the desktop applications,
turns you surfaces into xdg_toplevel
and xdg_popup
. The difficulty was that
I want to implement the
libweston-desktop
style interface so I can interface with wl_shell_surface
as
well. xdg_surface
was way more complicated, this is the point where I ran into
the wall of wl_object dependency, where I found clients offer destruct
wl_surface
, xdg_surface
, xdg_toplevel
, xdg_popup
in the arbitrary
orders. Boy I hope I implement the dependency correctly, now I do not run into
dangling pointers (or I think)? Plenty of protocols like wp-viewporter
and
wp-presentation
were implemented along the way, those were “easier” one, did
not give me many hiccups. Now I am on the way implementing an efficient
renderer. Interestingly even with only a basic renderer, the renderer is still
performing at sub-millisecond per frame.
Now compared to June or May, I felt much better, back then it felt like mission impossible, I tried to focus on the moment, try not think about how it can accomplish like KWin. But who I am kidding, With myself, certainly NO, only if I can get more people engaged in the project, the one thing I am not good at.