]> sigrok.org Git - libsigrokdecode.git/blobdiff - instance.c
instance.c: Add a debug message for thread creation.
[libsigrokdecode.git] / instance.c
index 0e27ca31e1190edb2e8269ce9a08f53d4f948b21..1753912147a5fc6d2942a1015b11cee3c1856e86 100644 (file)
@@ -948,28 +948,28 @@ static gpointer di_thread(gpointer data)
  * sample numbers within the chunk specified by 'inbuf' and 'inbuflen'.
  *
  * Correct example (4096 samples total, 4 chunks @ 1024 samples each):
- *   srd_inst_decode(di, 0,    1023, inbuf, 1024, 1);
- *   srd_inst_decode(di, 1024, 2047, inbuf, 1024, 1);
- *   srd_inst_decode(di, 2048, 3071, inbuf, 1024, 1);
- *   srd_inst_decode(di, 3072, 4095, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 0,    1024, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 1024, 2048, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 2048, 3072, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 3072, 4096, inbuf, 1024, 1);
  *
  * The chunk size ('inbuflen') can be arbitrary and can differ between calls.
  *
  * Correct example (4096 samples total, 7 chunks @ various samples each):
- *   srd_inst_decode(di, 0,    1023, inbuf, 1024, 1);
- *   srd_inst_decode(di, 1024, 1123, inbuf,  100, 1);
- *   srd_inst_decode(di, 1124, 1423, inbuf,  300, 1);
- *   srd_inst_decode(di, 1424, 1642, inbuf,  219, 1);
- *   srd_inst_decode(di, 1643, 2047, inbuf,  405, 1);
- *   srd_inst_decode(di, 2048, 3071, inbuf, 1024, 1);
- *   srd_inst_decode(di, 3072, 4095, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 0,    1024, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 1024, 1124, inbuf,  100, 1);
+ *   srd_inst_decode(di, 1124, 1424, inbuf,  300, 1);
+ *   srd_inst_decode(di, 1424, 1643, inbuf,  219, 1);
+ *   srd_inst_decode(di, 1643, 2048, inbuf,  405, 1);
+ *   srd_inst_decode(di, 2048, 3072, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 3072, 4096, inbuf, 1024, 1);
  *
  * INCORRECT example (4096 samples total, 4 chunks @ 1024 samples each, but
  * the start- and end-samplenumbers are not absolute):
- *   srd_inst_decode(di, 0,    1023, inbuf, 1024, 1);
- *   srd_inst_decode(di, 0,    1023, inbuf, 1024, 1);
- *   srd_inst_decode(di, 0,    1023, inbuf, 1024, 1);
- *   srd_inst_decode(di, 0,    1023, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 0,    1024, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 0,    1024, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 0,    1024, inbuf, 1024, 1);
+ *   srd_inst_decode(di, 0,    1024, inbuf, 1024, 1);
  *
  * @param di The decoder instance to call. Must not be NULL.
  * @param abs_start_samplenum The absolute starting sample number for the
@@ -1012,7 +1012,9 @@ SRD_PRIV int srd_inst_decode(struct srd_decoder_inst *di,
 
        if (abs_start_samplenum != di->abs_cur_samplenum ||
            abs_end_samplenum < abs_start_samplenum) {
-               srd_dbg("incorrect sample numbers");
+               srd_dbg("Incorrect sample numbers: start=%" PRIu64 ", cur=%"
+                       PRIu64 ", end=%" PRIu64 ".", abs_start_samplenum,
+                       di->abs_cur_samplenum, abs_end_samplenum);
                return SRD_ERR_ARG;
        }
 
@@ -1052,9 +1054,12 @@ SRD_PRIV int srd_inst_decode(struct srd_decoder_inst *di,
                Py_DecRef(py_res);
        } else {
                /* If this is the first call, start the worker thread. */
-               if (!di->thread_handle)
-                       di->thread_handle = g_thread_new("di_thread",
+               if (!di->thread_handle) {
+                       srd_dbg("No worker thread for this decoder stack "
+                               "exists yet, creating one: %s.", di->inst_id);
+                       di->thread_handle = g_thread_new(di->inst_id,
                                                         di_thread, di);
+               }
 
                /* Push the new sample chunk to the worker thread. */
                g_mutex_lock(&di->data_mutex);