[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