[PATCH] compositor-drm: pass only const strings as backend parameters
Giulio Camuffo
giuliocamuffo at gmail.com
Wed May 25 08:10:45 UTC 2016
2016-05-25 10:46 GMT+03:00 Quentin Glidic <sardemff7+wayland at sardemff7.net>:
> On 24/05/2016 18:50, Giulio Camuffo wrote:
>>
>> This makes more clear that the backend doesn't take ownership
>> of the data and it makes the API more usable.
>>
>> Signed-off-by: Giulio Camuffo <giuliocamuffo at gmail.com>
>
>
> Good idea, but one little flaw.
>
>
>
>> ---
>> src/compositor-drm.h | 10 +++++-----
>> src/main.c | 18 ++++++++++++------
>> 2 files changed, 17 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/compositor-drm.h b/src/compositor-drm.h
>> index 3f150db..24f60f8 100644
>> --- a/src/compositor-drm.h
>> +++ b/src/compositor-drm.h
>> @@ -58,13 +58,13 @@ struct weston_drm_backend_output_config {
>> * - "rgb565"
>> * - "xrgb2101010"
>> */
>> - char *gbm_format;
>> + const char *gbm_format;
>> /** The seat to be used by the output. Set to NULL to use the
>> * default seat. */
>> - char *seat;
>> + const char *seat;
>> /** The modeline to be used by the output. Refer to the
>> documentation
>> * of WESTON_DRM_BACKEND_OUTPUT_PREFERRED for details. */
>> - char *modeline;
>> + const char *modeline;
>> };
>>
>> /** The backend configuration struct.
>> @@ -93,7 +93,7 @@ struct weston_drm_backend_config {
>> * take ownership of the seat_id pointer and will free it on
>> * backend destruction.
>> */
>> - char *seat_id;
>> + const char *seat_id;
>>
>> /** The pixel format of the framebuffer to be used.
>> *
>> @@ -105,7 +105,7 @@ struct weston_drm_backend_config {
>> * The backend will take ownership of the format pointer and will
>> free
>> * it on backend destruction.
>> */
>> - char *gbm_format;
>> + const char *gbm_format;
>>
>> /** Callback used to configure the outputs.
>> *
>> diff --git a/src/main.c b/src/main.c
>> index d1c569d..c3d0d0b 100644
>> --- a/src/main.c
>> +++ b/src/main.c
>> @@ -972,6 +972,7 @@ drm_configure_output(struct weston_compositor *c,
>> struct weston_config *wc = weston_compositor_get_user_data(c);
>> struct weston_config_section *section;
>> char *s;
>> + char *seat, *gbm_format;
>> int scale;
>> enum weston_drm_backend_output_mode mode =
>> WESTON_DRM_BACKEND_OUTPUT_PREFERRED;
>> @@ -1000,8 +1001,10 @@ drm_configure_output(struct weston_compositor *c,
>> free(s);
>>
>> weston_config_section_get_string(section,
>> - "gbm-format",
>> &config->gbm_format, NULL);
>> - weston_config_section_get_string(section, "seat", &config->seat,
>> "");
>> + "gbm-format", &gbm_format, NULL);
>> + weston_config_section_get_string(section, "seat", &seat, "");
>> + config->gbm_format = gbm_format;
>> + config->seat = seat;
>
>
> Where do you free gbm_format and seat here?
Oh right, that's leaking... also in the current code but this does
make it more difficult to fix that though.
Thanks,
Giulio
>
> Cheers,
>
> --
>
> Quentin “Sardem FF7” Glidic
More information about the wayland-devel
mailing list