Unified multiple definitions of container_of() macro.

Removed duplicate definitions of the container_of() macro and
refactored sources to use the single implementation.

Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
dev
Jon Cruz 10 years ago committed by Bryce Harrington
parent d618f688d5
commit 867d50eea7
  1. 1
      clients/clickdot.c
  2. 1
      clients/desktop-shell.c
  3. 4
      clients/window.h
  4. 1
      desktop-shell/exposay.c
  5. 1
      desktop-shell/input-panel.c
  6. 1
      fullscreen-shell/fullscreen-shell.c
  7. 1
      ivi-shell/hmi-controller.c
  8. 1
      ivi-shell/input-panel-ivi.c
  9. 1
      ivi-shell/ivi-layout.c
  10. 5
      shared/config-parser.c
  11. 37
      shared/helpers.h
  12. 1
      src/animation.c
  13. 1
      src/bindings.c
  14. 1
      src/clipboard.c
  15. 1
      src/cms-colord.c
  16. 1
      src/cms-static.c
  17. 4
      src/compositor.h
  18. 1
      src/data-device.c
  19. 1
      src/libinput-device.c
  20. 1
      src/libinput-seat.c
  21. 1
      src/pixman-renderer.c
  22. 1
      src/rpi-renderer.c
  23. 1
      src/screen-share.c
  24. 1
      src/screenshooter.c
  25. 1
      src/text-backend.c
  26. 1
      src/zoom.c
  27. 1
      tests/ivi_layout-test-plugin.c
  28. 2
      tests/weston-test.c
  29. 1
      xwayland/launcher.c

@ -40,6 +40,7 @@
#include <wayland-client.h> #include <wayland-client.h>
#include "window.h" #include "window.h"
#include "shared/helpers.h"
struct clickdot { struct clickdot {
struct display *display; struct display *display;

@ -45,6 +45,7 @@
#include "window.h" #include "window.h"
#include "shared/cairo-util.h" #include "shared/cairo-util.h"
#include "shared/config-parser.h" #include "shared/config-parser.h"
#include "shared/helpers.h"
#include "desktop-shell-client-protocol.h" #include "desktop-shell-client-protocol.h"

@ -33,10 +33,6 @@
#include "shared/zalloc.h" #include "shared/zalloc.h"
#include "shared/platform.h" #include "shared/platform.h"
#define container_of(ptr, type, member) ({ \
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
struct window; struct window;
struct widget; struct widget;
struct display; struct display;

@ -28,6 +28,7 @@
#include <linux/input.h> #include <linux/input.h>
#include "shell.h" #include "shell.h"
#include "shared/helpers.h"
struct exposay_surface { struct exposay_surface {
struct desktop_shell *shell; struct desktop_shell *shell;

@ -32,6 +32,7 @@
#include "shell.h" #include "shell.h"
#include "desktop-shell-server-protocol.h" #include "desktop-shell-server-protocol.h"
#include "input-method-server-protocol.h" #include "input-method-server-protocol.h"
#include "shared/helpers.h"
struct input_panel_surface { struct input_panel_surface {
struct wl_resource *resource; struct wl_resource *resource;

@ -34,6 +34,7 @@
#include "compositor.h" #include "compositor.h"
#include "fullscreen-shell-server-protocol.h" #include "fullscreen-shell-server-protocol.h"
#include "shared/helpers.h"
struct fullscreen_shell { struct fullscreen_shell {
struct wl_client *client; struct wl_client *client;

@ -60,6 +60,7 @@
#include "ivi-layout-export.h" #include "ivi-layout-export.h"
#include "ivi-hmi-controller-server-protocol.h" #include "ivi-hmi-controller-server-protocol.h"
#include "shared/helpers.h"
/***************************************************************************** /*****************************************************************************
* structure, globals * structure, globals

@ -34,6 +34,7 @@
#include "ivi-shell.h" #include "ivi-shell.h"
#include "input-method-server-protocol.h" #include "input-method-server-protocol.h"
#include "ivi-layout-private.h" #include "ivi-layout-private.h"
#include "shared/helpers.h"
struct input_panel_surface { struct input_panel_surface {
struct wl_resource *resource; struct wl_resource *resource;

@ -63,6 +63,7 @@
#include "ivi-layout-export.h" #include "ivi-layout-export.h"
#include "ivi-layout-private.h" #include "ivi-layout-private.h"
#include "shared/helpers.h"
#include "shared/os-compatibility.h" #include "shared/os-compatibility.h"
struct link_layer { struct link_layer {

@ -39,10 +39,7 @@
#include <wayland-util.h> #include <wayland-util.h>
#include "config-parser.h" #include "config-parser.h"
#include "helpers.h"
#define container_of(ptr, type, member) ({ \
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
struct weston_config_entry { struct weston_config_entry {
char *key; char *key;

@ -52,6 +52,43 @@ extern "C" {
#define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y))
#endif #endif
/**
* Returns a pointer the the containing struct of a given member item.
*
* To demonstrate, the following example retrieves a pointer to
* `example_container` given only its `destroy_listener` member:
*
* @code
* struct example_container {
* struct wl_listener destroy_listener;
* // other members...
* };
*
* void example_container_destroy(struct wl_listener *listener, void *data)
* {
* struct example_container *ctr;
*
* ctr = wl_container_of(listener, ctr, destroy_listener);
* // destroy ctr...
* }
* @endcode
*
* @param ptr A valid pointer to the contained item.
*
* @param type A pointer to the type of content that the list item
* stores. Type does not need be a valid pointer; a null or
* an uninitialised pointer will suffice.
*
* @param member The named location of ptr within the sample type.
*
* @return The container for the specified pointer.
*/
#ifndef container_of
#define container_of(ptr, type, member) ({ \
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

@ -34,6 +34,7 @@
#include <fcntl.h> #include <fcntl.h>
#include "compositor.h" #include "compositor.h"
#include "shared/helpers.h"
WL_EXPORT void WL_EXPORT void
weston_spring_init(struct weston_spring *spring, weston_spring_init(struct weston_spring *spring,

@ -29,6 +29,7 @@
#include <linux/input.h> #include <linux/input.h>
#include "compositor.h" #include "compositor.h"
#include "shared/helpers.h"
struct weston_binding { struct weston_binding {
uint32_t key; uint32_t key;

@ -33,6 +33,7 @@
#include <sys/uio.h> #include <sys/uio.h>
#include "compositor.h" #include "compositor.h"
#include "shared/helpers.h"
struct clipboard_source { struct clipboard_source {
struct weston_data_source base; struct weston_data_source base;

@ -36,6 +36,7 @@
#include "compositor.h" #include "compositor.h"
#include "cms-helper.h" #include "cms-helper.h"
#include "shared/helpers.h"
struct cms_colord { struct cms_colord {
struct weston_compositor *ec; struct weston_compositor *ec;

@ -30,6 +30,7 @@
#include "compositor.h" #include "compositor.h"
#include "cms-helper.h" #include "cms-helper.h"
#include "shared/helpers.h"
struct cms_static { struct cms_static {
struct weston_compositor *ec; struct weston_compositor *ec;

@ -45,10 +45,6 @@ extern "C" {
#include "zalloc.h" #include "zalloc.h"
#include "timeline-object.h" #include "timeline-object.h"
#define container_of(ptr, type, member) ({ \
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
struct weston_transform { struct weston_transform {
struct weston_matrix matrix; struct weston_matrix matrix;
struct wl_list link; struct wl_list link;

@ -32,6 +32,7 @@
#include <assert.h> #include <assert.h>
#include "compositor.h" #include "compositor.h"
#include "shared/helpers.h"
struct weston_drag { struct weston_drag {
struct wl_client *client; struct wl_client *client;

@ -38,6 +38,7 @@
#include "compositor.h" #include "compositor.h"
#include "libinput-device.h" #include "libinput-device.h"
#include "shared/helpers.h"
#define DEFAULT_AXIS_STEP_DISTANCE wl_fixed_from_int(10) #define DEFAULT_AXIS_STEP_DISTANCE wl_fixed_from_int(10)

@ -37,6 +37,7 @@
#include "launcher-util.h" #include "launcher-util.h"
#include "libinput-seat.h" #include "libinput-seat.h"
#include "libinput-device.h" #include "libinput-device.h"
#include "shared/helpers.h"
static const char default_seat[] = "seat0"; static const char default_seat[] = "seat0";
static const char default_seat_name[] = "default"; static const char default_seat_name[] = "default";

@ -32,6 +32,7 @@
#include <assert.h> #include <assert.h>
#include "pixman-renderer.h" #include "pixman-renderer.h"
#include "shared/helpers.h"
#include <linux/input.h> #include <linux/input.h>

@ -37,6 +37,7 @@
#include "compositor.h" #include "compositor.h"
#include "rpi-renderer.h" #include "rpi-renderer.h"
#include "shared/helpers.h"
#ifdef ENABLE_EGL #ifdef ENABLE_EGL
#include <EGL/egl.h> #include <EGL/egl.h>

@ -40,6 +40,7 @@
#include <wayland-client.h> #include <wayland-client.h>
#include "compositor.h" #include "compositor.h"
#include "shared/helpers.h"
#include "shared/os-compatibility.h" #include "shared/os-compatibility.h"
#include "fullscreen-shell-client-protocol.h" #include "fullscreen-shell-client-protocol.h"

@ -35,6 +35,7 @@
#include "compositor.h" #include "compositor.h"
#include "screenshooter-server-protocol.h" #include "screenshooter-server-protocol.h"
#include "shared/helpers.h"
#include "wcap/wcap-decode.h" #include "wcap/wcap-decode.h"

@ -35,6 +35,7 @@
#include "compositor.h" #include "compositor.h"
#include "text-server-protocol.h" #include "text-server-protocol.h"
#include "input-method-server-protocol.h" #include "input-method-server-protocol.h"
#include "shared/helpers.h"
struct text_input_manager; struct text_input_manager;
struct input_method; struct input_method;

@ -29,6 +29,7 @@
#include "compositor.h" #include "compositor.h"
#include "text-cursor-position-server-protocol.h" #include "text-cursor-position-server-protocol.h"
#include "shared/helpers.h"
static void static void
weston_zoom_frame_z(struct weston_animation *animation, weston_zoom_frame_z(struct weston_animation *animation,

@ -35,6 +35,7 @@
#include "weston-test-server-protocol.h" #include "weston-test-server-protocol.h"
#include "ivi-test.h" #include "ivi-test.h"
#include "ivi-shell/ivi-layout-export.h" #include "ivi-shell/ivi-layout-export.h"
#include "shared/helpers.h"
struct test_context; struct test_context;

@ -40,6 +40,8 @@
#include "src/weston-egl-ext.h" #include "src/weston-egl-ext.h"
#endif /* ENABLE_EGL */ #endif /* ENABLE_EGL */
#include "shared/helpers.h"
struct weston_test { struct weston_test {
struct weston_compositor *compositor; struct weston_compositor *compositor;
struct weston_layer layer; struct weston_layer layer;

@ -36,6 +36,7 @@
#include <signal.h> #include <signal.h>
#include "xwayland.h" #include "xwayland.h"
#include "shared/helpers.h"
static int static int

Loading…
Cancel
Save