void QcRoundRobinDatabase::clear() { seek_to(0); for (size_t i = 0; i < m_number_of_reserved_slots * m_slot_size; i++) m_buffer << static_cast<quint8>(0); }
static void slider_cb (GtkRange * range, AppInfo * info) { gdouble val; val = gtk_range_get_value (range); seek_to (info, val); }
void QcRoundRobinDatabase::read(size_t position, QByteArray & data) { if (static_cast<size_t>(data.size()) == m_slot_size) { // Fixme: use int ? seek_to(position); m_buffer.readRawData(data.data(), m_slot_size); // qInfo() << "QcRoundRobinDatabase::read" << data; } // else }
void QcRoundRobinDatabase::write(const QByteArray & data) { if (static_cast<size_t>(data.size()) == m_slot_size) { // Fixme: use int ? seek_to(m_position); qInfo() << "QcRoundRobinDatabase::write @" << m_position; // << data; m_buffer.writeRawData(data.data(), m_slot_size); if (is_unlimited() || m_number_of_used_slots != m_number_of_reserved_slots) m_number_of_used_slots++; m_position++; if (is_round_robin() && m_position == m_number_of_reserved_slots) m_position = 0; // loop update_position(); } // else }
QcRoundRobinDatabase::QcRoundRobinDatabase(const QString & path) : m_file(path), m_buffer(), m_slot_format(), m_created(false), m_version(), m_position(), m_number_of_reserved_slots(), m_number_of_used_slots(), m_header_size(), m_slot_size() { open(); if (!m_created) { read_header(); seek_to(m_position); // go to next position } else { // ... } }
char *capture_until(char *str) { char *search,*startPos = currentPos; char *cv; int i; size_t len; search = strcasestr(startPos,str); if (search == NULL) return NULL; for(;*startPos == ' ';startPos++); len = search - startPos; cv = calloc(1,len+1); strncpy(cv,startPos,len); for(;cv[strlen(cv)-1]==' ';) cv[strlen(cv)-1]='\0'; for(i=0;i != strlen(cv); i++) { if (strchr("\t\n\r\b",cv[i])) cv[i]=' '; } set_current_value(cv); return seek_to(str); }
static void bus_message_cb (GstBus * bus, GstMessage * msg, AppInfo * info) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ASYNC_DONE:{ /* only interested in async-done messages from the top-level pipeline */ if (msg->src != GST_OBJECT_CAST (info->pipe)) break; if (!info->prerolled) { /* make slider visible if it's not visible already */ gtk_widget_show (info->slider); /* initial frame is often black, so seek to beginning plus a bit */ seek_to (info, 0.001); info->prerolled = TRUE; } /* update position */ if (!gst_element_query_position (info->pipe, GST_FORMAT_TIME, &info->cur_pos)) info->cur_pos = -1; break; } case GST_MESSAGE_ELEMENT:{ const GValue *val; GdkPixbuf *pixbuf = NULL; const GstStructure *structure; /* only interested in element messages from our gdkpixbufsink */ if (msg->src != GST_OBJECT_CAST (info->sink)) break; /* only interested in these two messages */ if (!gst_message_has_name (msg, "preroll-pixbuf") && !gst_message_has_name (msg, "pixbuf")) { break; } g_print ("pixbuf\n"); structure = gst_message_get_structure (msg); val = gst_structure_get_value (structure, "pixbuf"); g_return_if_fail (val != NULL); pixbuf = GDK_PIXBUF (g_value_dup_object (val)); gtk_image_set_from_pixbuf (GTK_IMAGE (info->img), pixbuf); g_object_unref (pixbuf); break; } case GST_MESSAGE_ERROR:{ GError *err = NULL; gchar *dbg = NULL; gst_message_parse_error (msg, &err, &dbg); g_error ("Error: %s\n%s\n", err->message, (dbg) ? dbg : ""); g_error_free (err); g_free (dbg); break; } default: break; } }