Commit Graph

80 Commits

Author SHA1 Message Date
Daniel Kolesa 79f3313931 e_comp_x: reverted 7c20b54 (was fixed in the meantime and i didn't notice) 2014-02-25 20:30:45 +00:00
Daniel Kolesa 7c20b5407a e_comp_x: check for zone before actually using it 2014-02-25 20:16:15 +00:00
Mike Blumenkrantz eca0549238 only set atoms for zone geometry for non-ignored clients
another T787 crash
2014-02-25 14:38:08 -05:00
Mike Blumenkrantz aec20f1420 force full render on present events during startup 2014-02-21 16:44:12 -05:00
Mike Blumenkrantz e7127a93ff don't set input shape differently on shaped_input clients
T931
2014-02-10 09:45:53 -05:00
Mike Blumenkrantz b97d043b25 assume that if we can't find a requested stacking client (X) it's going to be at the top of the stack
T908
2014-02-06 21:46:12 -05:00
Mike Blumenkrantz 78334b615e more stringshare improvements for window profile, apply window profile if no desk set (impossible?) 2014-02-06 12:59:28 -05:00
Mike Blumenkrantz 569c90e87f e_client_util_is_stacking() -> e_client_is_stacking()
regrettably, this can't be in e_client.x because it needs E_Comp struct members and header order does not allow for this :(
2014-02-05 10:58:57 -05:00
Mike Blumenkrantz 8d71213839 e_client_name_get() -> e_client_util_name_get()
this should be inlined
2014-02-05 10:55:50 -05:00
Mike Blumenkrantz eba912cf6a e_client_resizing_get() -> e_client_util_resizing_get()
functions in e_client.x should be namespaced with e_client_util to indicate that they are inline (and in e_client.x)
2014-02-05 10:51:36 -05:00
Mike Blumenkrantz f4de16df08 don't change zone after moving client
this happens automatically, and with more accuracy, later on
2014-02-03 13:57:45 -05:00
Mike Blumenkrantz 3c436b5c09 bugfix: initial client positioning with multiple monitors improved
this was added a while ago to fix positioning of windows that wanted to start centered but couldn't accurately calculate xinerama screen sizes, resulting in windows getting centered across the screen split. it ended up being a bit too aggressive, however.
2014-02-03 13:03:01 -05:00
Mike Blumenkrantz d293b368b8 bugfix: screen limits policy no longer breaks X client positioning
this has been broken since it was added, and I strongly regret allowing it to be added.
2014-02-03 12:52:35 -05:00
Mike Blumenkrantz d3468dd920 feature: ACTIVATE_EXCLUDE window active hint policy
this option causes window activation requests to only activate a window if it is on a currently visible virtual desktop, otherwise it will be set as urgent. I recall that things may have worked this way long ago...
2014-01-30 12:45:49 -05:00
Mike Blumenkrantz 752c220482 redo X first_damage logic
the main idea here is to not DRAW at the time of the first damage to avoid overdraw, but ignoring the fact that the region is ready to be drawn can be problematic when the drawing eventually occurs. best choice here is to keep the region but not the render update
2014-01-30 12:12:01 -05:00
Mike Blumenkrantz 340e02efb5 ignore non-internal override clients when stacking
this fixes the case where clients will briefly escape normal/expected stacking on startup if an override is visible
2014-01-30 12:12:01 -05:00
Mike Blumenkrantz 53e477a7d0 simplify layer marker stacking setup 2014-01-30 12:12:01 -05:00
Mike Blumenkrantz b6cbacc77e ignore re_manage clients for X object creation events 2014-01-30 12:12:01 -05:00
Mike Blumenkrantz 9d3f47f4f6 ignore deleted clients on comp object add event 2014-01-29 21:12:07 -05:00
Mike Blumenkrantz 7ef4340c3f revert 83397e1bde 2014-01-29 21:12:07 -05:00
Carsten Haitzler b7515a0958 null out damage on free in _e_comp_x_hook_client_del 2014-01-30 11:02:44 +09:00
Carsten Haitzler 83397e1bde fix segv where comp_data is null but still accessed
it seems i have an override-redirect window just off the bottom-right
of my screen - i think its the scim input panel status. what happens
is it is "managed" by comp but then deleted (_e_comp_x_hook_client_del
called), BUT _e_comp_x_object_add is called with a deferred event for
that client to add it again (likely this is a race) which finds he
client in a state of not having comp_data as the E_FREE in
_e_comp_x_hook_client_del() frees it and sets it to NULL. move the
comp_data free to the actual client free (which is the last time a
client is valid at all) solves this.
2014-01-30 08:55:28 +09:00
Mike Blumenkrantz 0ff2a408d3 force stacking for all new X clients during add event
this fixes a race condition when windows open simultaneously and then are stacked under each other: the previous result was that they would end up hanging out at the top of the window stack (above all windows) until another window was raised above them. now they stack as expected
2014-01-28 20:43:19 -05:00
Mike Blumenkrantz 576f0bab2d reject successive attempts to add evas callbacks in X compositor 2014-01-28 20:43:03 -05:00
Mike Blumenkrantz 49d6de3316 send X flush/dump to client window, not parent window 2014-01-28 15:38:40 -05:00
Mike Blumenkrantz 3dd0ea5189 break out client urgency setting into separate api function
this unclutters the client idler a little and also makes it easier to correctly set the urgency hint for clients
2014-01-27 21:35:39 -05:00
Mike Blumenkrantz 8aafbfe6ce X cursor color support doesn't depend on config values 2014-01-27 11:12:56 -05:00
Mike Blumenkrantz 9b2372a798 ignore X configure events where override is not set
this handler is only for dealing with overrides, so if this flag isn't set we're not interested
2014-01-27 10:58:41 -05:00
Mike Blumenkrantz fa33846fe4 force show of X layer markers on startup
this is cosmetic and only quiets some console errors on startup
2014-01-24 18:42:52 -05:00
Mike Blumenkrantz 99dca3c944 set first_damage flag on overrides
some overrides, in very rare cases, seem to only send a single damage. rendering at this point doesn't seem to hurt anything, so I'll give it a shot
2014-01-24 17:44:19 -05:00
Mike Blumenkrantz db31ccc5de unset new_client flag for override windows
this flag is used to block most cwm actions until after the client is past its first loop iteration. overrides, however, don't need to be blocked and will in fact break sometimes (fuck you gtk) as a result

it's worth noting that showing/hiding overrides extremely fast will still break the compositor a little in that I'm not going to render a single frame while constantly playing edje hide/show animations which are longer than the actual render. with animations disabled, however, rendering occurs as expected.

T831
2014-01-24 17:38:27 -05:00
Mike Blumenkrantz 6044fd8a78 force pixmap refresh for overrides, also automatically set pixmap size
override windows don't get PRESENT notifications, apparently, but this can be shortcut anyway by just setting the size from the configure event
2014-01-24 17:36:47 -05:00
Mike Blumenkrantz 57903b7aa3 only send ICCCM move/resize if it isn't already going to be sent 2014-01-24 16:20:21 -05:00
Mike Blumenkrantz c06eca070d send ICCCM move/resize for configure requests on X windows
somehow this got left out of the E19 handler, which broke apps that relied upon such notifications, most notably gnome-terminal
2014-01-24 16:01:01 -05:00
Mike Blumenkrantz a4c5629e7a check for comp data deletion and block X calls
these are all invalid if client's comp data has already been cleared, so just let the compositor manipulate stuff without touching protolol
2014-01-24 13:13:07 -05:00
Mike Blumenkrantz e54434e2db set X root pointer after determining color availability
E cursor now shows normally on startup
2014-01-23 16:16:58 -05:00
Mike Blumenkrantz ba82fb221d set only one client, the top client, as the focused client on restarts
with this, stacking and focus should be perfectly preserved across e restarts
2014-01-23 13:26:35 -05:00
Mike Blumenkrantz 00c4873d06 force X stacking for re-managed clients on startup
this ensures that X stacking is the same as canvas stacking
2014-01-23 13:26:00 -05:00
Mike Blumenkrantz 6a80d19cd7 restack windows after unreparenting on shutdown
this preserves stacking order across restarts
2014-01-23 13:25:25 -05:00
Mike Blumenkrantz c73aed330b only set take_focus for X clients after main loop has been reached 2014-01-23 13:24:46 -05:00
Mike Blumenkrantz aba8a6fe32 create clients for stacking windows immediately, don't check for them later 2014-01-23 12:01:31 -05:00
Mike Blumenkrantz 40a3950855 trivial use local window variable instead of helper function 2014-01-23 11:48:18 -05:00
Mike Blumenkrantz 525a342b2e suuuuuper don't restack layer markers 2014-01-23 11:42:22 -05:00
Mike Blumenkrantz b10f81de08 clean up shape input rect setting code 2014-01-23 10:34:17 -05:00
Mike Blumenkrantz 5707e8ceb8 I was right the first time...disable shape events on internal wins not input_only 2014-01-23 10:34:17 -05:00
Mike Blumenkrantz 292e8fd4b3 Revert "comp: fix self feeding event loop with shape input events on override wins"
This reverts commit 05a7087c84.
2014-01-23 09:02:33 -05:00
Mike Blumenkrantz 006c09621b revert 0f3e3ae5da, 14207e9770
shape modification on overrides

T847
2014-01-23 08:52:45 -05:00
Carsten Haitzler 05a7087c84 comp: fix self feeding event loop with shape input events on override wins
so comp would call ecore_x_composite_window_events_enable in
_e_comp_x_client_shape_input_rectangle_set()
_e_comp_x_hook_client_post_new_client() all the time.. because
ec->need_shape_merge was always set.. why was it always set.. because
ecore_x_composite_window_events_enable woudl set shape rectangles to
make the window visible to input events... so e would feed itsefl with
events all day long via x. this shortcuts that to check if event rects
are the SAME then don't set them as the ones that are stored.
2014-01-23 19:58:59 +09:00
Mike Blumenkrantz 0f3e3ae5da ignore only non-override non-reparented clients when disabling composite events 2014-01-22 22:34:55 -05:00
Mike Blumenkrantz 7f72d160af don't select shape events for input_only clients, do set for internal clients 2014-01-22 22:34:01 -05:00