/* GStreamer * Copyright (C) <1999> Erik Walthinsen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include #include #include #include "gstlog.h" static GMutex *mutex = NULL; static GCond *cond = NULL; static GMutex * gst_mutex_new_dummy_impl (void) { if (!mutex) mutex = g_malloc (8); return mutex; } static void gst_mutex_dummy_impl (GMutex * mutex) { /* NOP */ } static gboolean gst_mutex_trylock_dummy_impl (GMutex * mutex) { return TRUE; } static GCond * gst_cond_new_dummy_impl (void) { if (!cond) cond = g_malloc (8); return cond; } static void gst_cond_dummy_impl (GCond * cond) { /* NOP */ } static gboolean gst_cond_timed_wait_dummy_impl (GCond * cond, GMutex * mutex, GTimeVal * end_time) { struct timeval tvtarget; GTimeVal tvnow; guint64 now, target; gint64 diff; target = end_time->tv_sec * 1000000 + end_time->tv_usec; g_get_current_time (&tvnow); now = tvnow.tv_sec * 1000000 + tvnow.tv_usec; diff = target - now; if (diff > 1000) { tvtarget.tv_usec = diff % 1000000; tvtarget.tv_sec = diff / 1000000; select (0, NULL, NULL, NULL, &tvtarget); } return TRUE; } static GPrivate * gst_private_new_dummy_impl (GDestroyNotify destructor) { gpointer data; data = g_new0 (gpointer, 1); return (GPrivate *) data; } static gpointer gst_private_get_dummy_impl (GPrivate * private_key) { gpointer *data = (gpointer) private_key; return *data; } static void gst_private_set_dummy_impl (GPrivate * private_key, gpointer data) { *((gpointer *) private_key) = data; } static void gst_thread_create_dummy_impl (GThreadFunc func, gpointer data, gulong stack_size, gboolean joinable, gboolean bound, GThreadPriority priority, gpointer thread, GError ** error) { g_warning ("GStreamer configured to not use threads"); } static void gst_thread_dummy_impl (void) { /* NOP */ } static void gst_thread_dummy_impl_1 (gpointer thread) { /* NOP */ } static void gst_thread_set_priority_dummy_impl (gpointer thread, GThreadPriority priority) { /* NOP */ } static gboolean gst_thread_equal_dummy_impl (gpointer thread1, gpointer thread2) { return (thread1 == thread2); } GThreadFunctions gst_thread_dummy_functions = { gst_mutex_new_dummy_impl, (void (*)(GMutex *)) gst_mutex_dummy_impl, gst_mutex_trylock_dummy_impl, (void (*)(GMutex *)) gst_mutex_dummy_impl, gst_mutex_dummy_impl, gst_cond_new_dummy_impl, (void (*)(GCond *)) gst_cond_dummy_impl, (void (*)(GCond *)) gst_cond_dummy_impl, (void (*)(GCond *, GMutex *)) gst_cond_dummy_impl, gst_cond_timed_wait_dummy_impl, gst_cond_dummy_impl, gst_private_new_dummy_impl, gst_private_get_dummy_impl, gst_private_set_dummy_impl, gst_thread_create_dummy_impl, gst_thread_dummy_impl, gst_thread_dummy_impl_1, gst_thread_dummy_impl, gst_thread_set_priority_dummy_impl, gst_thread_dummy_impl_1, gst_thread_equal_dummy_impl };