[PATCH weston] Clients: Fix memleak issues in various clients of weston

Pekka Paalanen ppaalanen at gmail.com
Thu May 15 23:18:10 PDT 2014


On Thu, 15 May 2014 18:58:16 +0530
vivek <vivek.ellur at samsung.com> wrote:

> In many clients of weston, Display was not being destroyed so added it.
> Also destroy windows, widgets which were not being destroyed.
> 
> Signed-off-by: vivek <vivek.ellur at samsung.com>
> ---
>  clients/cliptest.c    |   13 ++++++++++---
>  clients/dnd.c         |   11 +++++++++++
>  clients/editor.c      |    3 +++
>  clients/flower.c      |    4 ++++
>  clients/fullscreen.c  |    4 ++++
>  clients/gears.c       |   14 +++++++++++++-
>  clients/image.c       |    2 ++
>  clients/scaler.c      |    3 +++
>  clients/smoke.c       |    4 ++++
>  clients/stacking.c    |    3 +++
>  clients/transformed.c |    3 +++
>  11 files changed, 60 insertions(+), 4 deletions(-)
> 
> diff --git a/clients/cliptest.c b/clients/cliptest.c
> index 3cee343..a1928f4 100644
> --- a/clients/cliptest.c
> +++ b/clients/cliptest.c
> @@ -879,6 +879,14 @@ benchmark(void)
>  	return 0;
>  }
>  
> +static void
> +cliptest_destroy(struct cliptest *cliptest)
> +{
> +	widget_destroy(cliptest->widget);
> +	window_destroy(cliptest->window);
> +	free(cliptest);
> +}
> +
>  int
>  main(int argc, char *argv[])
>  {
> @@ -897,9 +905,8 @@ main(int argc, char *argv[])
>  	cliptest = cliptest_create(d);
>  	display_run(d);
>  
> -	widget_destroy(cliptest->widget);
> -	window_destroy(cliptest->window);
> -	free(cliptest);
> +	cliptest_destroy(cliptest);
> +	display_destroy(d);
>  
>  	return 0;
>  }
> diff --git a/clients/dnd.c b/clients/dnd.c
> index a463d6f..620cfff 100644
> --- a/clients/dnd.c
> +++ b/clients/dnd.c
> @@ -639,6 +639,14 @@ dnd_create(struct display *display)
>  	return dnd;
>  }
>  
> +static void
> +dnd_destroy(struct dnd *dnd)
> +{
> +	widget_destroy(dnd->widget);
> +	window_destroy(dnd->window);
> +	free(dnd);
> +}
> +
>  int
>  main(int argc, char *argv[])
>  {
> @@ -660,5 +668,8 @@ main(int argc, char *argv[])
>  
>  	display_run(d);
>  
> +	dnd_destroy(dnd);
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/editor.c b/clients/editor.c
> index f3f6141..08d1203 100644
> --- a/clients/editor.c
> +++ b/clients/editor.c
> @@ -1382,6 +1382,9 @@ main(int argc, char *argv[])
>  
>  	text_entry_destroy(editor.entry);
>  	text_entry_destroy(editor.editor);
> +	widget_destroy(editor.widget);
> +	window_destroy(editor.window);
> +	display_destroy(editor.display);
>  
>  	return 0;
>  }
> diff --git a/clients/flower.c b/clients/flower.c
> index 8769445..624525c 100644
> --- a/clients/flower.c
> +++ b/clients/flower.c
> @@ -195,5 +195,9 @@ int main(int argc, char *argv[])
>  
>  	display_run(d);
>  
> +	widget_destroy(flower.widget);
> +	window_destroy(flower.window);
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/fullscreen.c b/clients/fullscreen.c
> index 28efb15..5c5dd2b 100644
> --- a/clients/fullscreen.c
> +++ b/clients/fullscreen.c
> @@ -562,5 +562,9 @@ int main(int argc, char *argv[])
>  
>  	display_run(d);
>  
> +	widget_destroy(fullscreen.widget);
> +	window_destroy(fullscreen.window);
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/gears.c b/clients/gears.c
> index 93a86b4..95f0bb2 100644
> --- a/clients/gears.c
> +++ b/clients/gears.c
> @@ -469,17 +469,29 @@ gears_create(struct display *display)
>  	return gears;
>  }
>  
> +static void
> +gears_destroy(struct gears *gears)
> +{
> +	widget_destroy(gears->widget);
> +	window_destroy(gears->window);
> +	free(gears);
> +}
> +
>  int main(int argc, char *argv[])
>  {
>  	struct display *d;
> +	struct gears *gears;
>  
>  	d = display_create(&argc, argv);
>  	if (d == NULL) {
>  		fprintf(stderr, "failed to create display: %m\n");
>  		return -1;
>  	}
> -	gears_create(d);
> +	gears = gears_create(d);
>  	display_run(d);
>  
> +	gears_destroy(gears);
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/image.c b/clients/image.c
> index 054979d..112b93d 100644
> --- a/clients/image.c
> +++ b/clients/image.c
> @@ -424,5 +424,7 @@ main(int argc, char *argv[])
>  	if (image_counter > 0)
>  		display_run(d);
>  
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/scaler.c b/clients/scaler.c
> index f94e714..3939022 100644
> --- a/clients/scaler.c
> +++ b/clients/scaler.c
> @@ -321,6 +321,9 @@ main(int argc, char *argv[])
>  
>  	display_run(d);
>  
> +	widget_destroy(box.widget);
>  	window_destroy(box.window);
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/smoke.c b/clients/smoke.c
> index 5d976af..65b6e03 100644
> --- a/clients/smoke.c
> +++ b/clients/smoke.c
> @@ -329,5 +329,9 @@ int main(int argc, char *argv[])
>  
>  	display_run(d);
>  
> +	widget_destroy(smoke.widget);
> +	window_destroy(smoke.window);
> +	display_destroy(d);
> +
>  	return 0;
>  }
> diff --git a/clients/stacking.c b/clients/stacking.c
> index f51a476..5aaf469 100644
> --- a/clients/stacking.c
> +++ b/clients/stacking.c
> @@ -304,5 +304,8 @@ main(int argc, char *argv[])
>  
>  	display_run(stacking.display);
>  
> +	window_destroy(stacking.root_window);
> +	display_destroy(stacking.display);
> +
>  	return 0;
>  }
> diff --git a/clients/transformed.c b/clients/transformed.c
> index 4b1cb05..880a0a9 100644
> --- a/clients/transformed.c
> +++ b/clients/transformed.c
> @@ -290,6 +290,9 @@ int main(int argc, char *argv[])
>  			       transformed.width, transformed.height);
>  
>  	display_run(d);
> +	widget_destroy(transformed.widget);
> +	window_destroy(transformed.window);
> +	display_destroy(d);
>  
>  	return 0;
>  }

Yeah, looks fine to me.


Thanks,
pq


More information about the wayland-devel mailing list