Clients: Fix memleak issues in various clients of weston
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@samsung.com>
Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 abeded8..ea6101d 100644
--- a/clients/stacking.c
+++ b/clients/stacking.c
@@ -304,5 +304,8 @@
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 @@
transformed.width, transformed.height);
display_run(d);
+ widget_destroy(transformed.widget);
+ window_destroy(transformed.window);
+ display_destroy(d);
return 0;
}