[PATCH v4 07/21] modetest: Don't limit mode set and planes to two instances

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Mar 19 07:55:48 PDT 2013


Configuring mode on more than two connectors or two planes is perfectly
valid. Support it.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 tests/modetest/modetest.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 31205ee..f58c01d 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -1065,8 +1065,8 @@ int main(int argc, char **argv)
 	char *module = NULL;
 	unsigned int i;
 	int count = 0, plane_count = 0;
-	struct connector_arg con_args[2];
-	struct plane_arg plane_args[2] = { { 0, }, };
+	struct connector_arg *con_args = NULL;
+	struct plane_arg *plane_args = NULL;
 	
 	opterr = 0;
 	while ((c = getopt(argc, argv, optstr)) != -1) {
@@ -1090,8 +1090,16 @@ int main(int argc, char **argv)
 			modes = 1;
 			break;
 		case 'P':
+			plane_args = realloc(plane_args,
+					     (plane_count + 1) * sizeof *plane_args);
+			if (plane_args == NULL) {
+				fprintf(stderr, "memory allocation failed\n");
+				return 1;
+			}
+
 			if (parse_plane(&plane_args[plane_count], optarg) < 0)
 				usage(argv[0]);
+
 			plane_count++;
 			break;
 		case 'p':
@@ -1099,8 +1107,16 @@ int main(int argc, char **argv)
 			planes = 1;
 			break;
 		case 's':
+			con_args = realloc(con_args,
+					   (count + 1) * sizeof *con_args);
+			if (con_args == NULL) {
+				fprintf(stderr, "memory allocation failed\n");
+				return 1;
+			}
+
 			if (parse_connector(&con_args[count], optarg) < 0)
 				usage(argv[0]);
+
 			count++;				      
 			break;
 		case 'v':
-- 
1.8.1.5



More information about the dri-devel mailing list