Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / core / write-buffer.c
index 762fc24eb8382722cd91f79ae546fcfd24b55ada..eec306ae1350b63abb3f6eabde0141e6f99e1b76 100644 (file)
@@ -126,23 +126,28 @@ void write_buffer_flush(void)
         block_count = 0;
 }
 
-static void read_settings(void)
+static int flush_timeout(void)
 {
-       int msecs;
-
-       if (timeout_tag != -1)
-                g_source_remove(timeout_tag);
+       write_buffer_flush();
+        return 1;
+}
 
+static void read_settings(void)
+{
        write_buffer_flush();
 
-       write_buffer_max_blocks = settings_get_int("write_buffer_kb") *
-               1024/BUFFER_BLOCK_SIZE;
+       write_buffer_max_blocks =
+               settings_get_size("write_buffer_size") / BUFFER_BLOCK_SIZE;
 
-       if (settings_get_int("write_buffer_mins") > 0) {
-                msecs = settings_get_int("write_buffer_mins")*60*1000;
-               timeout_tag = g_timeout_add(msecs,
-                                           (GSourceFunc) write_buffer_flush,
-                                           NULL);
+       if (settings_get_time("write_buffer_timeout") > 0) {
+               if (timeout_tag == -1) {
+                       timeout_tag = g_timeout_add(settings_get_time("write_buffer_timeout"),
+                                                   (GSourceFunc) flush_timeout,
+                                                   NULL);
+               }
+       } else if (timeout_tag != -1) {
+               g_source_remove(timeout_tag);
+                timeout_tag = -1;
        }
 }
 
@@ -153,8 +158,8 @@ static void cmd_flushbuffer(void)
 
 void write_buffer_init(void)
 {
-       settings_add_int("misc", "write_buffer_mins", 0);
-       settings_add_int("misc", "write_buffer_kb", 0);
+       settings_add_time("misc", "write_buffer_timeout", "0");
+       settings_add_size("misc", "write_buffer_size", "0");
 
        buffers = g_hash_table_new((GHashFunc) g_direct_hash,
                                   (GCompareFunc) g_direct_equal);