diff options
| author | Michael VanOverbeek <[email protected]> | 2016-07-25 12:57:52 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-07-25 12:57:52 -0400 |
| commit | 46c1c31302f111a1f3ec23a70e6f3986a9aa2a27 (patch) | |
| tree | f00af7ea3f6ad2641fb26fa1d310fd8b7179b39c /source/ShiftUI/Internal/MONO-TODO | |
| parent | af48e774189596b8d7a058c564a7d6d75205ca03 (diff) | |
| parent | 6fa16209519896de09949a27425dff00ebf2970a (diff) | |
| download | shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.tar.gz shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.tar.bz2 shiftos-c--46c1c31302f111a1f3ec23a70e6f3986a9aa2a27.zip | |
Merge pull request #17 from MichaelTheShifter/shiftui_integration
Shiftui integration
Diffstat (limited to 'source/ShiftUI/Internal/MONO-TODO')
| -rw-r--r-- | source/ShiftUI/Internal/MONO-TODO | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/source/ShiftUI/Internal/MONO-TODO b/source/ShiftUI/Internal/MONO-TODO new file mode 100644 index 0000000..76397d0 --- /dev/null +++ b/source/ShiftUI/Internal/MONO-TODO @@ -0,0 +1,112 @@ +plans for XplatUIX11.cs: + + - 1 thread watching X socket, doing nothing but + XNextEvent/hwnd.Queue.Enqueue (with minimal motion + compression/key repeat detection) + + - figure out how to deal with the selection events, since they + busy loop waiting on a response from the X socket. maybe + block that thread with an event and wake it up when the + event thread get enough info? + + - Idle event raised once regardless of how many thread queues + we have (should it come from the X event thread?) + + - X11Hwnd which caches (amongst other things) the properties + for the toplevel window so we can avoid doing all those + XChangeProperty things on every single UpdateStyle call. + + - have RULES for things (like "do not call this function + except from ...", etc) and make sure they're enforced. + + - SendMessage.. can't we just insert the right message on the + hwnd's queue instead of using SendAsyncMethod? + + - what's the difference between PostMessage and SendMessage? + + - clean up the MESS that is: + GetWindowState + SetWindowState + + and especially: + SetHwndStyles + SetWMStyles + DeriveStyles + the Style handling in CreateWindow + + - multiple screens? do we care? xinerama foo? + + - fix the mostly static, somewhat instance nature of + XplatUIX11.cs. Either make it static, or make it an + instance. + + - we need to rethink the expose event handling. right now + expose events are only handled once all the other events in + the queue are handled. So, if you're resizing quickly you + get no redraws until you're done. maybe look at the + _NET_WM_SYNC_REQUEST protocol (for the resize/redraw case + specifically). Also, the current expose handling has us + accessing the invalid list/rectangle from multiple threads. + + - factor out ALL knowledge of the multiple windows + (client/whole) into the X11Hwnd class, so we can try to + factor it out. + + - clean up the systray icon stuff - right now it destroys (!) + the client_window and sets client_window == whole_window. + ugh. + + - hwnds should keep track of the width/height they report to + SWF as well as the x window's width/height. That is, we + should allow hwnds with 0,0 width/height even though X + doesn't allow it. There's some "zero_size" stuff in Hwnd, + but it still appears impossible to have 0,0 sized Widgets. + + - window (subwindow, really) destruction should move to Hwnd + if possible. + + - remove 90% of "lock (XlibLock)" usage. It's not really + needed at all, except perhaps to synchronize the + XEventThread and the PeekMessage/GetMessage methods. + + - the big synchronization problem now is the XEventQueue + class. I think all queue operations need to be done while + holding a lock, as the events are queued from the + XEventThread and dequeued from GetMessage. + +possible classes: + + - XplatUIX11 (creates the first (only?) X11Display class. + Most calls should just get the hwnd/display and make a + method call) + + - X11Display (manages the display handle, creates the event + thread, keeps ref to an X11Atoms and the X11RootHwnd) + + - XEventThread (does this need to be a separate class? can + probably just be a method in X11Display) + + - X11Hwnd (move all the style translation here? handles + property changes and caches them. window title here too) + + - X11RootHwnd (add the special root window property stuff + here) + + - X11Atoms (per display atom list. should these be properties + or fields? fields probably, with the builtins as constants). + + - Xlib (the pinvoke wrapper for Xlib calls) + +window managers we need to test again: + + - metacity on SLED/SUSE + - metacity on ubuntu edgy + - compiz on SLED + - compiz HEAD + - beryl? or should compiz be enough? + +specs: + +Extended Window Manager Hints: http://standards.freedesktop.org/wm-spec/wm-spec-latest.html +XEmbed spec: http://standards.freedesktop.org/xembed-spec/latest/ +Systray spec: http://standards.freedesktop.org/systemtray-spec/systemtray-spec-0.2.html |
