The GSoC wrap-up

And so, another Summer of Code has ended. During the past three months, I was working on Mutter, a GNOME's Compositor. My main goal was to make Mutter, which was written as an X11 Window Manager more than a decade ago and recently ported to also be a Wayland compositor, start Wayland session without requiring X server (Xwayland) to be present. That goal was accomplished, and Mutter is now able to start without Xwayland being started. Other goals included making Wayland clients start without X11 being present, which wasn't accomplished (or even started), because after main goal was finished, there was only a week left before this evaluation, and nothing could be accomplished in that time, given the complexity of the task.
So, lets sum what needed to be done during these past three months:
- First task that I worked on was splitting X11 specific part from main display object, MetaDisplay. That code was moved into a new object, MetaX11Display, which is owned by MetaDisplay and i…

Progress Report July 31st - August 13th

Some may notice that there's a week missing since my last progress report. That week was GSoC second evaluation week, and my mentors were notified in advance why I was absent during that week.
Since last time I posted, I have completed my primary goal to make mutter start without Xwayland present. Note however, that this is just like I said, "make mutter *start* without X11 present", and nothing else. Window managing is a bit mess, and that was set as my second goal, if the primary one was accomplished much earlier in the SoC. So yes, you can start but you can't use mutter without X11 if you use my latest work.
So, what remained to be done since the last time I posted? Not much. Workspace management had lot of X11 specifics, such as getting workspace layout, names and such from X11 atoms. It was easily fixed by splitting X11 specific code to meta-x11-display.c and making that code run when or after MetaX11Display was created, either in meta_x11_display_new (), or us…

Documented Mutter API changes after main GSoC goal was reached

A new object, MetaX11Display, was added, and owned by MetaDisplay. It holds X11 specific objects of MetaDisplay, as well MetaScreen. Creating and destroying the object should be possible all the time, anytime. Helper function, meta_get_x11_display (MetaDisplay *) was added to retrieve MetaX11Display object currently owned by MetaDisplay. All public X11 functions referenced below are defined inside meta/meta-x11-display.h
Second new object, MetaWorkspaceManager, was also introduced to hold workspace management parts of MetaScreen, to avoid cluttering MetaDisplay a lot. It is owned by MetaDisplay, and can be retrieved by using meta_display_get_workspace_manager (MetaDisplay *). All public functions referenced below are defined inside meta/meta-workspace-manager.h
MetaScreen, which previously had an instance for all of the screens mutter managed became an single object nowadays, as it only manages one screen. Because of that, MetaScreen was removed, and objects it managed were split bet…

Progress Report July 10th - July 23rd

And so, another two weeks have passed. During these two weeks I was focused on fixing my previous code drops, as outlined in the previous post. I have gotten enough feedback from both of my mentors these past two weeks, so the first week was spent on rebasing my previous work and applying feedback. That took quite some time, but after two rounds, I finally believe we have the first part where we want it. I do expect a nit or two, still, since the latest round of MetaX11Display creation/destruction involved using GObject destructors, rather than meta_display_(close|free). But now that this is done, and MetaScreen is now properly disposed of, I could focus on my main objective - getting Mutter to work without X11.
After all the shoveling work was done, I started investigating what needed to be done so meta_x11_display_new () call could be avoided, and mutter could be started without crashing. First part involved couple of cosmetics, like renaming errors.c/h file to meta-x11-errors.c/h,…

Progress Report June 26th - July 9th

Another two weeks have passed, and here I am again, reporting on what I've done. Contrary what the title says, the work period was (once again, sadly) shorter than that. First week, as it might've been known, was the first evaluation week, which I passed (which makes sense, since I'm writing here again, no?)! I want to use this opportunity to thank my mentors for nice feedback they've given me on both the evaluation form and on my previous coding experience.
Since I was waiting for evaluation results, there went first 5 days of the first week, as it would not make sense to continue had I failed. As soon as I found out I passed the first evaluation, I started gaining more feedback on the previous code drop, as we discussed on how should different parts be implemented or reimplemented differently that I originally did. Waiting for second response took some time (a bit more than I expected, but hey, I understand that my mentors have their own jobs and families, and they …

Progress report for period June 12th - June 25th

Before I considered applying for SoC this summer, I talked to potential mentors and mentioned that my studies finish on June 15th, and they said it was no problem. Although my initial schedule did consider first two weeks, where it mentioned that during that period, code should be analysed and it should be discussed what should be done. I tried to stick to the schedule as much as possible, but in the end, it did not work as I planned. So, starting at June 16th, I started to become more involved with the discussion, as well as some coding. That covers "why you didn't blog earlier?" question someone might ask.
During the coding period, I discovered that MetaDisplay, main GObject of Mutter had a lot of X11 specific fields, so I had to move them into something else, which we (mentors and myself) decided to call MetaX11Display. A lot of code had to be modified, and that had to be carefully approached, so nothing got broken in the process. The "coding" I had done wa…

Initial post

This blog is going to be used to report progress on my Google Summer of Code project.