Age | Commit message (Collapse) | Author |
|
Because it's fun to go fullscreen on my development machine. :^)
|
|
This makes it more straightforward to build a cross-compiler toolchain.
Also move math stuff from LibC to LibM.
|
|
|
|
|
|
This way GWindow doesn't need to do synchronous IPC to fetch the appropriate
size for the window's backing store. This is mostly only relevant during
live resize.
|
|
Also avoid sending multiple copies of mouse events to global trackers.
|
|
This is pretty cute and helps me spot when something's chewing up CPU.
|
|
|
|
|
|
I'm still feeling this out, but I am starting to like the general idea.
|
|
|
|
|
|
|
|
Fail with EACCES in various situations. Fix userland bugs that were exposed.
|
|
Divide the window into 3x3 hot areas and resize in the direction of the
corner where the resize starts. The middle is a no-op area.
This needs some polish but the basic mechanism is good.
|
|
|
|
Use this to implement incremental resizing for Terminal so that we only
ever resize to fit a perfect number of rows and columns.
This is very nice. :^)
|
|
This makes interactive resizing work a lot better, althought it's still not
perfect. There are still glitches and unpleasant flashes of zeroed memory.
|
|
Wait for them to finish a paint, then send them a new resize event.
The exception is when releasing the mouse button to end the resize.
Then we send a new resize event right away.
|
|
This is pretty limited and not entirely stable, but it does work! :^)
|
|
|
|
|
|
Windows now learn when the mouse cursor leaves or enters them.
Use this to implement GWidget::{enter,leave}_event() and use that
to implement the CoolBar button effect. :^)
|
|
|
|
|
|
|
|
The algorithm I came up with is O(n^2) but given the small numbers of rects
we're typically working with, it doesn't really matter. May need to revisit
this in the future if we find ourselves with a huge number of rects.
|
|
This patch also adds a Format concept to GraphicsBitmap. For now there are
only two formats: RGB32 and RGBA32. Windows with alpha channel have their
backing stores created in the RGBA32 format.
Use this to make Terminal windows semi-transparent for that comfy rice look.
There is one problem here, in that window compositing overdraw incurs
multiple passes of blending of the same pixels. This leads to a mismatch in
opacity which is obviously not good. I will work on this in a later patch.
The alpha blending is currently straight C++. It should be relatively easy
to optimize this using SSE instructions.
For now I'm just happy with the cute effect. :^)
|
|
|
|
This is obviously not always the right thing to do, but it removes some
confusion while using other resolutions. Eventually we're gonna need some
kind of compressed image decoder.
|
|
I had to change PhysicalPage around a bit for this. Physical pages can now
be instantiated for any arbitrary physical address without worrying that
such pages end up in the kernel page allocator when released.
Most of the pieces were already in place, I just glued everything together.
|
|
|
|
Since these are owner/ownee relationships, there's no need for indirection.
|
|
|
|
Since WSWindows are owned by WSConnectionClients, it's fine for them to just
reference the client directly.
|
|
|
|
|
|
This is actually so much better. Grabbing directly at the RTC was silly. :^)
|
|
This is a monster patch that required changing a whole bunch of things.
There are performance and stability issues all over the place, but it works.
Pretty cool, I have to admit :^)
|
|
|
|
And just use mmap() to allocate the pixels.
|
|
And use this to implement shared bitmaps between WindowServer and clients.
|
|
Use these in WindowServer instead of poking at the BochsVGADevice directly.
|
|
Currently you can only mmap the entire framebuffer.
Using this when starting up the WindowServer gets us yet another step
closer towards it moving into userspace. :^)
|
|
We were reading one client message per client per event loop iteration.
That was not very snappy. Make the sockets non-blocking and read() until
there are no messages left.
It would be even better to make as few calls to read() as possible to
reduce context switching, but this is already a huge improvement.
|
|
|
|
|
|
It's no longer used since all communication now happens across sockets. :^)
|
|
This is really cool! :^)
Apps currently refuse to start if the WindowServer isn't listening on the
socket in /wsportal. This makes sense, but I guess it would also be nice
to have some sort of "wait for server on startup" mode.
This has performance issues, and I'll work on those, but this stuff seems
to actually work and I'm very happy with that.
|
|
|