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

Re: [E-devel] Ecore_X fullscreen support



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.

Sebastian


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.

dan