summaryrefslogtreecommitdiff
path: root/server/tests/test_display_resolution_changes.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/test_display_resolution_changes.c')
-rw-r--r--server/tests/test_display_resolution_changes.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/server/tests/test_display_resolution_changes.c b/server/tests/test_display_resolution_changes.c
new file mode 100644
index 00000000..edf7fb2d
--- /dev/null
+++ b/server/tests/test_display_resolution_changes.c
@@ -0,0 +1,66 @@
+/**
+ * Recreate the primary surface endlessly.
+ */
+
+#include <math.h>
+#include <config.h>
+#include <stdlib.h>
+#include "test_display_base.h"
+
+SpiceServer *server;
+SpiceCoreInterface *core;
+SpiceTimer *ping_timer;
+
+void show_channels(SpiceServer *server);
+
+int ping_ms = 100;
+
+void pinger(void *opaque)
+{
+ // show_channels is not thread safe - fails if disconnections / connections occur
+ //show_channels(server);
+
+ core->timer_start(ping_timer, ping_ms);
+}
+
+void set_primary_params(void *cb_opaque, uint64_t *arg1, uint64_t *arg2)
+{
+#if 0
+ static int toggle = 0;
+
+ if (toggle) {
+ *arg1 = 800;
+ *arg2 = 600;
+ } else {
+ *arg1 = 1024;
+ *arg2 = 768;
+ }
+ toggle = 1 - toggle;
+#endif
+ static int count = 0;
+
+ *arg1 = 800 + sin((float)count / 6) * 200;
+ *arg2 = 600 + cos((float)count / 6) * 200;
+ count++;
+}
+
+static Command commands[] = {
+ {DESTROY_PRIMARY, 0, 0, NULL, NULL},
+ {CREATE_PRIMARY, 0, 0, set_primary_params, NULL},
+};
+
+int main(void)
+{
+ core = basic_event_loop_init();
+ server = test_init(core);
+ //spice_server_set_image_compression(server, SPICE_IMAGE_COMPRESS_OFF);
+ test_add_display_interface(server);
+ test_set_command_list(commands, COUNT(commands));
+
+ ping_timer = core->timer_add(pinger, NULL);
+ core->timer_start(ping_timer, ping_ms);
+
+ basic_event_loop_mainloop();
+
+ return 0;
+}