summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2012-06-25 09:34:57 +0300
committerYonit Halperin <yhalperi@redhat.com>2012-07-03 14:13:43 +0300
commitbf91bdce5cb5b391b9d3f86900845831da80a5c5 (patch)
treef5fa2d5e524e54846620c5ac70fa2912741bf61d
parent8bb444ec7ac3a64058138b24241149ae116653a4 (diff)
downloadspice-bf91bdce5cb5b391b9d3f86900845831da80a5c5.tar.gz
spice-bf91bdce5cb5b391b9d3f86900845831da80a5c5.tar.xz
spice-bf91bdce5cb5b391b9d3f86900845831da80a5c5.zip
char_device: move SpiceCharDeviceState from the header
In addition, I also removed the no longer used wakeup callback
-rw-r--r--server/char_device.c23
-rw-r--r--server/char_device.h28
-rw-r--r--server/reds.c8
3 files changed, 27 insertions, 32 deletions
diff --git a/server/char_device.c b/server/char_device.c
index f4939566..e87c0296 100644
--- a/server/char_device.c
+++ b/server/char_device.c
@@ -43,6 +43,29 @@ struct SpiceCharDeviceClientState {
uint32_t max_send_queue_size;
};
+struct SpiceCharDeviceState {
+ int running;
+ uint32_t refs;
+
+ Ring write_queue;
+ Ring write_bufs_pool;
+ SpiceCharDeviceWriteBuffer *cur_write_buf;
+ uint8_t *cur_write_buf_pos;
+ SpiceTimer *write_to_dev_timer;
+ uint64_t num_self_tokens;
+
+ Ring clients; /* list of SpiceCharDeviceClientState */
+ uint32_t num_clients;
+
+ uint64_t client_tokens_interval; /* frequency of returning tokens to the client */
+ SpiceCharDeviceInstance *sin;
+
+ int during_read_from_device;
+
+ SpiceCharDeviceCallbacks cbs;
+ void *opaque;
+};
+
enum {
WRITE_BUFFER_ORIGIN_NONE,
WRITE_BUFFER_ORIGIN_CLIENT,
diff --git a/server/char_device.h b/server/char_device.h
index 72f8abdb..4a70075b 100644
--- a/server/char_device.h
+++ b/server/char_device.h
@@ -109,34 +109,6 @@ typedef struct SpiceCharDeviceCallbacks {
typedef struct SpiceCharDeviceState SpiceCharDeviceState;
-struct SpiceCharDeviceState {
- int running;
- uint32_t refs;
-
- Ring write_queue;
- Ring write_bufs_pool;
- SpiceCharDeviceWriteBuffer *cur_write_buf;
- uint8_t *cur_write_buf_pos;
- SpiceTimer *write_to_dev_timer;
- uint64_t num_self_tokens;
-
- Ring clients;
- uint32_t num_clients;
-
- uint64_t client_tokens_interval; /* frequency of returning tokens to the client */
- SpiceCharDeviceInstance *sin;
-
- int during_read_from_device;
-
- SpiceCharDeviceCallbacks cbs;
- void *opaque;
- /* tmp till all spice char devices will employ the new SpiceCharDeviceState
- * implementation. Then, SpiceCharDeviceState will be moved to char_device.c and
- * this callback will be removed */
- void (*wakeup)(SpiceCharDeviceInstance *sin);
-};
-
-
SpiceCharDeviceState *spice_char_device_state_create(SpiceCharDeviceInstance *sin,
uint32_t client_tokens_interval,
uint32_t self_tokens,
diff --git a/server/reds.c b/server/reds.c
index 911564b8..9488237b 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3158,11 +3158,11 @@ static SpiceCharDeviceState *attach_to_red_agent(SpiceCharDeviceInstance *sin)
SPICE_GNUC_VISIBLE void spice_server_char_device_wakeup(SpiceCharDeviceInstance* sin)
{
- if (sin->st->wakeup) {
- sin->st->wakeup(sin);
- } else {
- spice_char_device_wakeup(sin->st);
+ if (!sin->st) {
+ spice_error("no SpiceCharDeviceState attached to instance %p", sin);
+ return;
}
+ spice_char_device_wakeup(sin->st);
}
#define SUBTYPE_VDAGENT "vdagent"