summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2011-09-15 15:14:18 -0300
committerDaniel Vetter <daniel.vetter@ffwll.ch>2011-09-15 19:38:21 +0200
commit7ead7ba3e6bcfa59203d63ac3cc66432853e02de (patch)
tree0ef4a909dac4fac9bb459a73d845fd036f987518
parent9fe1148c4b20cb80c86c64a81c4594d152d20be7 (diff)
testdisplay: don't enter the main loop if dump_info or test_all_modes
If calls inside update_display fail, the function returns and we don't quit the program if dump_info or test_all_modes. So we enter the main loop and keep waiting for user input, even on cases where we are not supposed to require user input. To fix this, we move the check to outside the update_display function. As a side effect, we also do cleanup instead of just exit(0) and we return 1 in case update_display failed. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--tests/testdisplay.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/tests/testdisplay.c b/tests/testdisplay.c
index cae04e9..69dbf42 100644
--- a/tests/testdisplay.c
+++ b/tests/testdisplay.c
@@ -909,7 +909,7 @@ set_mode(struct connector *c)
* Each connector has a corresponding encoder, except in the SDVO case
* where an encoder may have multiple connectors.
*/
-static void update_display(void)
+static int update_display(void)
{
struct connector *connectors;
int c;
@@ -918,13 +918,13 @@ static void update_display(void)
if (!resources) {
fprintf(stderr, "drmModeGetResources failed: %s\n",
strerror(errno));
- return;
+ return 0;
}
connectors = calloc(resources->count_connectors,
sizeof(struct connector));
if (!connectors)
- return;
+ return 0;
if (dump_info) {
dump_connectors();
@@ -940,8 +940,7 @@ static void update_display(void)
}
}
drmModeFreeResources(resources);
- if (dump_info || test_all_modes)
- exit(0);
+ return 1;
}
extern char *optarg;
@@ -1138,7 +1137,14 @@ int main(int argc, char **argv)
goto out_stdio_off;
}
- update_display();
+ if (!update_display()) {
+ ret = 1;
+ goto out_stdio_off;
+ }
+
+ if (dump_info || test_all_modes)
+ goto out_stdio_off;
+
g_main_loop_run(mainloop);
out_stdio_off: