[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] Ecore_X fullscreen support

Sebastian Dransfeld wrote:
dan sinclair wrote:
Sebastian Dransfeld wrote:
The ecore_x_netwm_state_request_send() function should be correct. But don't send the ECORE_X_WINDOW_STATE_FULLSCREEN twice (although it shouldn't matter). It is possible to request two changes in one call, but if you only want to change one property use ECORE_X_WINDOW_STATE_UNKNOWN. (There should be an ECORE_X_WINDOW_STATE_NONE there, please add it :).

The request will (should) only work if the window is mapped. Else the state should be set on the window with ecore_x_netwm_window_state_set().

If it still doesn't work, I've done something wrong somewhere.


Hm, using the ecore_x_netwm_state_request is actually causing evas to segv:
#0 0x00002aaaac64f45d in evas_object_change (obj=0x5703a0) at evas_object_main.c:66
66         obj->layer->evas->changed = 1;
(gdb) bt
#0 0x00002aaaac64f45d in evas_object_change (obj=0x5703a0) at evas_object_main.c:66 #1 0x00002aaaab279e57 in _edje_part_recalc (ed=0x56ee80, ep=0x5701a0, flags=3)
    at edje_calc.c:1117
#2  0x00002aaaab27a17a in _edje_recalc (ed=0x56ee80) at edje_calc.c:162
#3  0x00002aaaab284d48 in _edje_thaw (ed=0x56ee80) at edje_util.c:1781
#4  0x00002aaaab287688 in edje_thaw () at edje_util.c:49
#5  0x00002aaaaac49ffe in ewl_idle_render (data=0x5703a0) at ewl_misc.c:456
#6 0x00002aaaace9c715 in _ecore_idle_enterer_call () at ecore_idle_enterer.c:78
#7  0x00002aaaace9e635 in _ecore_main_loop_iterate_internal (once_only=0)
    at ecore_main.c:487
#8  0x00002aaaace9e957 in ecore_main_loop_begin () at ecore_main.c:79
#9  0x00002aaaaac4a609 in ewl_main () at ewl_misc.c:357
#10 0x0000000000402837 in main (argc=2, argv=0x7fffff998008) at main.c:104
(gdb) quit

If I do it before the window is realized (with the _state_set call) I get a window that doesn't have a border, but isn't resized to the size of the screen. I think the WM should do the resize, correct? Or do I need to store the original position/size in ewl somewhere and restore that when they drop out of fullscreen?

If you want to see what ewl is doing, do a cvs update as I've put the code back. There are two tests you can run 'ewl_test widget' and then click on the button on the bottom should try to use the _state_request function to go fullscreen. The other test is 'ewl_test fullscreen' which will do it before the window is realized.

Again, it's quite possible I've done something wrong with this, I just don't know what it is, heh.

Maybe the window either has a size set, or sets it size later? If the state is set to fullscreen on map, the wm should make the window fullscreen without any client interaction. Same with the state request.

I can look at the test apps, I will probably have time for it tomorrow.

Well. Request state is fixed (hopefully), whilst state set before map is broken.

E ignores all window size changes because the pending move/resize queue is read before the hints are read. As I remember, this used to work, but doesn't anymore. If no one objects, I will move e_hints_window_init() before reading the pending move/resize queue.