- Jul 16, 2015
-
-
Transform matrix for transforming a surface to global_matrix is calculated from * ivi_layout_surface_properties * ivi_layout_layer_properties This patch pareares sub-method like following, 1/ calc_surface_to_global_matrix() calc_transformation_matrix() is called twice with ivi_layout_surface/layer_properties respectively. 2/ calc_transformation_matrix() This calcurates matrix from orientation, source rectangle and destination rectangle. 2-1/ To calculate rotation, fit centor of source rectangle to (0,0) temporarily. This is moved back in 2-4. 2-2/ Apply rotation variant 2-3/ Apply scale variant 2-4/ Apply positioning variant, taking account into 2-1 temporary positioning. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
ivi-shell: transform refactoring, remove transform part of ivi_layout_surface and ivi_layout_layer once To refactor transform of ivi_layout_surface and ivi_layout_surface to be more readable logical flow. Remove following parts once, * definition of weston_transform in ivi_layout_surface * update_layer_orientation * update_layer_position * update_surface_position * update_surface_orientation * update_scale Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
There is no logic update. Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Jul 15, 2015
-
-
Emmanuel Gil Peyrot authored
This reverts commit d3553c72. weston_wm_write_property() takes the ownership of the reply it gets as a parameter, and will eventually free it later in writable_callback. This change introduced a double-free when Xwayland programs triggered a copy to the clipboard, leading to a Weston crash. Reviewed-By:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com>
-
- Jul 14, 2015
-
-
Christopher Michael authored
Documentation for the prepare_lock_surface event description is incorrect. The summary says "Tell the client..." however the full-text description says "tell the shell..." Signed-off-by:
Chris Michael <cp.michael@samsung.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> [This time include the actual changes.]
-
Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Jul 13, 2015
-
-
Christopher Michael authored
Documentation for the prepare_lock_surface event description is incorrect. The summary says "Tell the client..." however the full-text description says "tell the shell..." Signed-off-by:
Chris Michael <cp.michael@samsung.com> Reviewed-by:
Bryce Harrington <bryce@osg.samsung.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Bryce Harrington authored
The wl_list_for_each operation on the free_buffers list should use free_link not link, which is a different list. Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com>
-
When an output is being destroyed reassign the output of the views that were in it, to be sure not to keep a dangling pointer which could be used later on by calling weston_surface_assign_output() on the view's surface. Also make sure we send wl_surface.leave events to the surfaces that were in that output. Reviewed-by:
Jonas Ådahl <jadahl@gmail.com>
-
- Jul 11, 2015
-
-
Derek Foreman authored
The wl_list_for_each operation on the free_buffers list should use free_link not link, which is a different list. This fixes a crash when entering fullscreen mode when using the pixman renderer on the wayland back-end. Signed-off-by:
Derek Foreman <derekf@osg.samsung.com>
-
Bryce Harrington authored
dump_property allows reply to be NULL. Calling it unconditionally will ensure user knows where the selection failed. Also refactor code a bit. Suggested by Marek Chalupa
-
Bryce Harrington authored
The man pages indicate this routine can return NULL on certain error conditions. Suggested by Marek Chalupa Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Marek Chalupa <mchqwerty@gmail.com>
-
Derek Foreman authored
Make it a bool in both surface_move() and struct weston_move_grab Signed-off-by:
Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Jonas Ådahl <jadahl@gmail.com>
-
- Jul 10, 2015
-
-
This commits starts to separate the libweston code from the weston specific code. As such, the main() is moved, together with signals handling and configuration handling. The definition of DEFAULT_REPAINT_WINDOW is left in compositor.c, so the config loading of repaint_msec is slightly modified to account that. Acked-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
This commit adds three new exported functions: - weston_compositor_create() returns a new weston_compositor instance, initializing it as the now removed weston_compositor_init() did. - weston_compositor_exit(compositor) asks the compositor to tear down by calling the compositor's exit vfunc which is set by the libweston application. - weston_compositor_destroy(compositor) is called by the libweston application when tearing down the compositor. The compositor is destroyed and the memory freed. Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Bryce Harrington authored
Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Marek Chalupa <mchqwerty@gmail.com>
-
Bryce Harrington authored
It is redundant to check x*alloc's return value for null pointers, since they are guaranteed to either return non-NULL or terminate the program. In cases where we memset the malloc'd memory to 0, we can more efficiently use the xzalloc() routine. zalloc looks for opportunities to return memory chunks that have already been zero'd out, so it can provide better performance. This patch addresses this warning, reported by Denis Denisov: [clients/window.c:1164] -> [clients/window.c:1166]: (warning) Possible null pointer dereference: surface - otherwise it is redundant to check it against null. [clients/window.c:4513] -> [clients/window.c:4514]: (warning) Possible null pointer dereference: surface - otherwise it is redundant to check it against null. Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Marek Chalupa <mchqwerty@gmail.com>
-
Bryce Harrington authored
error(1, ...) already will exit, per man page: "If status has a nonzero value, then error() calls exit(3) to terminate the program using the given value as the exit status." So exit(EXIT_FAILURE) is never reached. The EXIT_FAILURE macro is guaranteed to be non-zero. Typically it's just 1, but on some systems (e.g. OpenVMS apparently) exit(1) means success so EXIT_FAILURE there is defined to some other non-zero value. Signed-off-by:
Bryce Harrington <bryce@osg.samsung.com> Reviewed-by:
Marek Chalupa <mchqwerty@gmail.com>
-
- Jul 09, 2015
-
-
This is a preliminary change for libweston, with no functional modifications. Separate the backends and the core weston_compositor struct, by creating the weston_compositor in the main(), and having the various backends extend the weston_backend struct, an instance of which is returned by the backend entry point. This enable us to logically separate the compositor core from the backend, allowing the core to be extended without messing with the backends. Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Jul 07, 2015
-
-
Added a simple C-based test framework and an example program that uses it to run through some simple unit tests. This is new code inspired primarily by the approaches of Google Test, Boost Test, JUnit and TestNG. Factors of others were also considered during design and implementation. Signed-off-by:
Jon A. Cruz <jonc@osg.samsung.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Jul 02, 2015
-
-
Fix desktop-shell's activate() method to only restore the output mode on the single output on which a shell surface gets activated. This way toplevel fullscreen surfaces can mode-switch their output via method WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER and that temporary mode properly persists until the surface loses its fullscreen status, but effects like window switching and exposay still work in the expected way. v2: Split into a separate patch from original patch "Allow restore_output_mode() to work properly.", as suggested by Derek Foreman. Signed-off-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Cc: Derek Foreman <derekf@osg.samsung.com> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
- Jun 30, 2015
-
-
Bryce Harrington authored
-
Mario Kleiner authored
Allow proper handling of output->pipe > 1 to support triple-head graphics cards etc. by using the "high-crtc" support introduced in Linux 2.6.39 and libdrm 2.4.25 around May 2011. Signed-off-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Reviewed-By:
Derek Foreman <derekf@osg.samsung.com>
-
Mario Kleiner authored
Initialize output->native_mode with the initially chosen mode for an output, so weston_output_mode_switch_to_native() has something to work with and can switch back from temporary selected modes to the outputs native mode. Before, this was a no-op. This allows an output to switch back to its default mode if a former toplevel fullscreen shell surface created via method WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER gets destroyed, or it gets demoted to non-fullscreen, or if modesetting on the output failed for some reason. v2: Modified and split into a separate patch from original patch "Allow restore_output_mode() to work properly.", as suggested by Derek Foreman. Signed-off-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Cc: Derek Foreman <derekf@osg.samsung.com> Reviewed-By:
Derek Foreman <derekf@osg.samsung.com>
-
Mario Kleiner authored
The matching logic in choose_mode() compared refresh rate of a drm_mode candidate mode expressed in Hz against the requested refresh rate of the target weston_mode expressed in milliHz, so the match always failed and the logic always ended up the mode with the highest refresh rate for a given resolution, instead of the one matching the requested rate. Match proper fields to fix this. Signed-off-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Reviewed-by:
Derek Foreman <derekf@osg.samsung.com>
-
Mario Kleiner authored
Desktop shell demoted all fullscreen shell surfaces on all active outputs of a multi-display setup whenever any shell surface was activated anywhere. This made it impossible to have multiple fullscreen windows on separate outputs active at the same time, as creating or activating any shell surface would disable fullscreen status for all existing fullscreen surfaces. Make lower_fullscreen_layer() more selective, so on request it only demotes fullscreen surfaces on a specified weston_output. The activate() method for a specific surface will now only request demotion of fullscreen surfaces on the target output of the activated surface, but leave fullscreen surfaces on unrelated outputs alone. Desktop wide acting functions like the window switcher or exposay will still demote all fullscreen surfaces on all outputs to implement their effect as before. Signed-off-by:
Mario Kleiner <mario.kleiner.de@gmail.com> Reviewed-By:
Derek Foreman <derekf@osg.samsung.com>
-
- Jun 26, 2015
-
-
Jonas Ådahl authored
Signed-off-by:
Jonas Ådahl <jadahl@gmail.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Jonas Ådahl authored
Signed-off-by:
Jonas Ådahl <jadahl@gmail.com> Acked-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-
Pekka Paalanen authored
We used to rely on the order in which the weston_compositor::destroy_signal callbacks happened, to not access freed memory. Don't know when, but this broke at least with ivi-shell, which caused crashes in random places on compositor shutdown. Valgrind found the following: Invalid write of size 8 at 0xC2EDC69: unbind_input_panel (input-panel-ivi.c:340) by 0x4E3B6BB: destroy_resource (wayland-server.c:537) by 0x4E3E085: for_each_helper.isra.0 (wayland-util.c:359) by 0x4E3E60D: wl_map_for_each (wayland-util.c:365) by 0x4E3BEC7: wl_client_destroy (wayland-server.c:675) by 0x4182F2: text_backend_notifier_destroy (text-backend.c:1047) by 0x4084FB: wl_signal_emit (wayland-server-core.h:264) by 0x4084FB: main (compositor.c:5465) Address 0x67ea360 is 208 bytes inside a block of size 232 free'd at 0x4C2A6BC: free (vg_replace_malloc.c:473) by 0x4084FB: wl_signal_emit (wayland-server-core.h:264) by 0x4084FB: main (compositor.c:5465) Invalid write of size 8 at 0x4E3E0D7: wl_list_remove (wayland-util.c:57) by 0xC2EDEE9: destroy_input_panel_surface (input-panel-ivi.c:191) by 0x4E3B6BB: destroy_resource (wayland-server.c:537) by 0x4E3BC7B: wl_resource_destroy (wayland-server.c:550) by 0x40DB8B: wl_signal_emit (wayland-server-core.h:264) by 0x40DB8B: weston_surface_destroy (compositor.c:1883) by 0x40DB8B: weston_surface_destroy (compositor.c:1873) by 0x4E3B6BB: destroy_resource (wayland-server.c:537) by 0x4E3E085: for_each_helper.isra.0 (wayland-util.c:359) by 0x4E3E60D: wl_map_for_each (wayland-util.c:365) by 0x4E3BEC7: wl_client_destroy (wayland-server.c:675) by 0x4182F2: text_backend_notifier_destroy (text-backend.c:1047) by 0x4084FB: wl_signal_emit (wayland-server-core.h:264) by 0x4084FB: main (compositor.c:5465) Address 0x67ea370 is 224 bytes inside a block of size 232 free'd at 0x4C2A6BC: free (vg_replace_malloc.c:473) by 0x4084FB: wl_signal_emit (wayland-server-core.h:264) by 0x4084FB: main (compositor.c:5465) Invalid write of size 8 at 0x4E3E0E7: wl_list_remove (wayland-util.c:58) by 0xC2EDEE9: destroy_input_panel_surface (input-panel-ivi.c:191) by 0x4E3B6BB: destroy_resource (wayland-server.c:537) by 0x4E3BC7B: wl_resource_destroy (wayland-server.c:550) by 0x40DB8B: wl_signal_emit (wayland-server-core.h:264) by 0x40DB8B: weston_surface_destroy (compositor.c:1883) by 0x40DB8B: weston_surface_destroy (compositor.c:1873) by 0x4E3B6BB: destroy_resource (wayland-server.c:537) by 0x4E3E085: for_each_helper.isra.0 (wayland-util.c:359) by 0x4E3E60D: wl_map_for_each (wayland-util.c:365) by 0x4E3BEC7: wl_client_destroy (wayland-server.c:675) by 0x4182F2: text_backend_notifier_destroy (text-backend.c:1047) by 0x4084FB: wl_signal_emit (wayland-server-core.h:264) by 0x4084FB: main (compositor.c:5465) Address 0x67ea368 is 216 bytes inside a block of size 232 free'd at 0x4C2A6BC: free (vg_replace_malloc.c:473) by 0x4084FB: wl_signal_emit (wayland-server-core.h:264) by 0x4084FB: main (compositor.c:5465) Looking at the first of these, unbind_input_panel() gets called when the text-backend destroys its helper client which has bound to input_panel interface. This happens after the shell's destroy_signal callback has been called, so the shell has already been freed. The other two errors come from wl_list_remove(&input_panel_surface->link); which has gone stale when the shell was destroyed (shell->input_panel.surfaces list). Rather than creating even more destroy listeners and hooking them up in spaghetti, modify text-backend to not hook up to the compositor destroy signal. Instead, make it the text_backend_init() callers' responsibility to also call text_backend_destroy() appropriately, before the shell goes away. This fixed all the above Valgrind errors, and avoid a crash with ivi-shell when exiting Weston. Also using desktop-shell exhibited similar Valgrind errors which are fixed by this patch, but those didn't happen to cause any crashes AFAIK. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-By:
Derek Foreman <derekf@osg.samsung.com>
-
- Jun 25, 2015
-
-
These tests are implemented on test suite framework, which provides internal method validation, Following features are tested, - add notification of ivi-layer with bad parameter - add notification of ivi-surface configure with bad parameter - add notification of creating ivi-layer with bad parameter - add notification of creating ivi-surface with bad parameter - add notification of removing ivi-layer with bad parameter - add notification of removing ivi-surface with bad parameter Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
These tests are implemented on test suite framework, which provides helper client. Following features are tested, - add notfication of ivi-surface with bad condition Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
These tests are implemented on test suite framework, which provides internal method validation. Following features are tested, - notification of adding ivi-layer - notification of creating ivi-layer - notification of removing ivi-layer Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
These tests are implemented on test suite framework, which provides helper client. Following features are tested, - notification of adding ivi-surface - notification of ivi-surface configure - notification of creating ivi-surface - notification of removing ivi-surface Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
The TESTs in ivi_layout-test.c may have several server-side parts (RUNNER_TEST in ivi_layout-test-plugin.c) each. Sometimes we need to carry state from one RUNNER_TEST to another within one TEST, but not across multiple TESTs. The correct lifetime of that state would be the lifetime (and identity) of the runner_resource, as one TEST creates and uses at most one weston_test_runner during its lifetime. However, tests are executed one by one. Take a shortcut, and use a static global for storing that state. This turns the test_context into a singleton. To ensure it is not confused between multiple TESTs, add asserts to verify its identity. Following patches will add tests for notification callbacks. These will be using the carried state. [Pekka: add serialization checks, rename the global, rewrite commit message.] Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
These tests are implemented on test suite framework, which provides internal method validation, Following features are tested, - ivi-screen operation with bad parameter - render order with bad parameter - destroy ivi-layer in the ivi-screen and call commit_changes Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
These tests are implemented on test suite framework, which provides internal method validation. Following features are tested, - ivi-screen id - ivi-screen resolution - render order of ivi-layers in ivi-screen Signed-off-by:
Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-
These tests are implemented on test suite framework, which provides internal method validation. Following features are tested for ivi-layer, - create with bad parameter - visibility with bad parameter - opacity with bad parameter - destination rectangle with bad parameter - orientation with bad parameter - dimension with bad parameter - position with bad parameter - source rectangle with bad parameter - properties with bad parameter - destroy ivi-layer and call set_visibility_commit_changes - destroy ivi-layer, call set_opacity, and commit_changes - destroy ivi-layer, call set_orientation, and commit_changes - destroy ivi-layer, call set_dimension, and commit_changes - call set_position, destroy ivi-layer, and commit_changes - call set_source_rectangle, destroy ivi-layer, and commit_changes - call set_destination_rectangle, destroy ivi-layer, and commit_changes - create duplicate - destroy ivi-layer and call get_layer Signed-off-by:
Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> Reviewed-by:
Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by:
Jon A. Cruz <jonc@osg.samsung.com>
-