5
0
mirror of git://git.proxmox.com/git/spiceterm.git synced 2024-12-22 13:34:06 +03:00

remove wakup timer

This commit is contained in:
Dietmar Maurer 2013-08-05 14:18:45 +02:00
parent f6cb554cab
commit 8a22eb4f37
3 changed files with 29 additions and 65 deletions

View File

@ -125,7 +125,7 @@ SimpleSpiceUpdate *test_spice_create_update_from_bitmap(uint32_t surface_id,
return update;
}
static SimpleSpiceUpdate *test_spice_create_update_draw(Test *test, uint32_t surface_id)
static SimpleSpiceUpdate *test_draw_char(Test *test, int x, int y, int c)
{
int top, left;
uint8_t *dst;
@ -134,18 +134,18 @@ static SimpleSpiceUpdate *test_spice_create_update_draw(Test *test, uint32_t sur
int i, j;
QXLRect bbox;
left = 100;
top = 100;
left = x*8;
top = y*16;
printf("DRAW %d %d %d\n", left, top, c);
unique++;
bw = 8;
bh = 16;
bitmap = dst = malloc(bw * bh * 4);
//printf("allocated %p\n", dst);
int c = 65;
unsigned char *data = vt_font_data + c*16;
unsigned char d = *data;
@ -169,7 +169,7 @@ static SimpleSpiceUpdate *test_spice_create_update_draw(Test *test, uint32_t sur
bbox.left = left; bbox.top = top;
bbox.right = left + bw; bbox.bottom = top + bh;
return test_spice_create_update_from_bitmap(surface_id, bbox, bitmap);
return test_spice_create_update_from_bitmap(0, bbox, bitmap);
}
@ -291,56 +291,14 @@ static int get_command(QXLInstance *qin, struct QXLCommandExt *ext)
return TRUE;
}
static void produce_command(Test *test)
{
Command *command;
QXLWorker *qxl_worker = test->qxl_worker;
g_assert(qxl_worker);
if (!test->num_commands) {
usleep(1000);
return;
}
command = &test->commands[test->cmd_index];
if (command->cb) {
command->cb(test, command);
}
switch (command->command) {
/* Drawing commands, they all push a command to the command ring */
case SIMPLE_DRAW: {
SimpleSpiceUpdate *update;
update = test_spice_create_update_draw(test, 0);
push_command(&update->ext);
break;
}
}
test->cmd_index = (test->cmd_index + 1) % test->num_commands;
}
static int req_cmd_notification(QXLInstance *qin)
{
Test *test = SPICE_CONTAINEROF(qin, Test, qxl_instance);
test->core->timer_start(test->wakeup_timer, test->wakeup_ms);
//test->core->timer_start(test->wakeup_timer, test->wakeup_ms);
return TRUE;
}
static void do_wakeup(void *opaque)
{
Test *test = opaque;
int notify;
test->cursor_notify = NOTIFY_CURSOR_BATCH;
for (notify = NOTIFY_DISPLAY_BATCH; notify > 0;--notify) {
produce_command(test);
}
test->core->timer_start(test->wakeup_timer, test->wakeup_ms);
test->qxl_worker->wakeup(test->qxl_worker);
}
static void release_resource(QXLInstance *qin, struct QXLReleaseInfoExt release_info)
{
QXLCommandExt *ext = (QXLCommandExt*)(unsigned long)release_info.info->id;
@ -578,9 +536,21 @@ void test_add_agent_interface(SpiceServer *server)
spice_server_add_interface(server, &vdagent_sin.base);
}
static int my_charcode = 65;
static int my_posx = 0;
static void kbd_push_key(SpiceKbdInstance *sin, uint8_t frag)
{
printf("KEYCODE %u\n", frag);
Test *test = SPICE_CONTAINEROF(sin, Test, keyboard_sin);
printf("KEYCODE %u %p\n", frag, test);
SimpleSpiceUpdate *update;
update = test_draw_char(test, my_posx, 10, my_charcode);
my_posx++;
my_charcode++;
push_command(&update->ext);
test->qxl_worker->wakeup(test->qxl_worker);
}
static uint8_t kbd_get_leds(SpiceKbdInstance *sin)
@ -597,15 +567,9 @@ static SpiceKbdInterface keyboard_sif = {
.get_leds = kbd_get_leds,
};
SpiceKbdInstance keyboard_sin = {
.base = {
.sif = &keyboard_sif.base,
},
};
void test_add_keyboard_interface(SpiceServer *server)
void test_add_keyboard_interface(Test* test)
{
spice_server_add_interface(server, &keyboard_sin.base);
spice_server_add_interface(test->server, &test->keyboard_sin.base);
}
void test_set_simple_command_list(Test *test, int *simple_commands, int num_commands)
@ -640,9 +604,11 @@ Test *test_new(SpiceCoreInterface *core)
test->qxl_instance.base.sif = &display_sif.base;
test->qxl_instance.id = 0;
test->keyboard_sin.base.sif = &keyboard_sif.base;
test->core = core;
test->server = server;
test->wakeup_ms = 50;
test->cursor_notify = NOTIFY_CURSOR_BATCH;
// some common initialization for all display tests
printf("TESTER: listening on port %d (unsecure)\n", port);
@ -655,7 +621,6 @@ Test *test_new(SpiceCoreInterface *core)
cursor_init();
test->has_secondary = 0;
test->wakeup_timer = core->timer_add(do_wakeup, test);
int timeout = 10; // max time to wait for client connection
test->conn_timeout_timer = core->timer_add(do_conn_timeout, test);

View File

@ -89,13 +89,12 @@ struct Test {
QXLInstance qxl_instance;
QXLWorker *qxl_worker;
SpiceKbdInstance keyboard_sin;
uint8_t primary_surface[MAX_HEIGHT * MAX_WIDTH * 4];
int primary_height;
int primary_width;
SpiceTimer *wakeup_timer;
int wakeup_ms;
SpiceTimer *conn_timeout_timer;
int cursor_notify;
@ -123,7 +122,7 @@ void test_set_simple_command_list(Test *test, int *command, int num_commands);
void test_set_command_list(Test *test, Command *command, int num_commands);
void test_add_display_interface(Test *test);
void test_add_agent_interface(SpiceServer *server); // TODO - Test *test
void test_add_keyboard_interface(SpiceServer *server);
void test_add_keyboard_interface(Test *test);
Test* test_new(SpiceCoreInterface* core);
uint32_t test_get_width(void);

View File

@ -37,7 +37,7 @@ int main(void)
test_add_agent_interface(test->server);
test_add_keyboard_interface(test->server);
test_add_keyboard_interface(test);
test_set_simple_command_list(test, simple_commands, COUNT(simple_commands));