I didn't try an ABI check (ever), I just spotted the padding while browsing the source code out of curiosity.
As to struct protocol_error (from inside struct wl_display) I moved the "id" field to avoid compiler padding: from: uint32_t pointer uint32_t to: uint32_t uint32_t pointer On Sun, Sep 18, 2016 at 4:03 AM, Yong Bakos <[email protected]> wrote: > On Sep 17, 2016, at 5:42 PM, Ursache Vladimir <[email protected]> wrote: >> >> Hi, >> On amd64 struct wl_display from wayland-client.c can shrink in size >> from 320 bytes to 304 if two fields (last_error and id) are >> rearranged. Compiles fine. > > I believe you mean last_error and protocol_error. > This will change the ABI (did you try an ABI check?) and we can't do > that at this time. > > yong > > > >> End result looks like this: >> >> struct wl_display { >> struct wl_proxy proxy; >> struct wl_connection *connection; >> >> /* When display gets an error event from some object, it stores >> * information about it here, so that client can get this >> * information afterwards */ >> struct { >> /* Code of the error. It can be compared to >> * the interface's errors enumeration. */ >> uint32_t code; >> /* id of the proxy that caused the error. There's no warranty >> * that the proxy is still valid. It's up to client how it will >> * use it */ >> uint32_t id; >> /* interface (protocol) in which the error occurred */ >> const struct wl_interface *interface; >> } protocol_error; >> /* errno of the last wl_display error */ >> int last_error; >> int fd; >> struct wl_map objects; >> struct wl_event_queue display_queue; >> struct wl_event_queue default_queue; >> pthread_mutex_t mutex; >> >> int reader_count; >> uint32_t read_serial; >> pthread_cond_t reader_cond; >> }; >> _______________________________________________ >> wayland-devel mailing list >> [email protected] >> https://lists.freedesktop.org/mailman/listinfo/wayland-devel > _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
