C++
Collada DOM Locales BUG
jun 16
Collada DOM is buggy, we all know, but this bug makes it unusable. Collada team is not handling locale info, so non C-compatible locale users won’t be able to use float point numbers. While C locale uses floating point numbers like “1.43″, spanish locale uses “1,43″.
One quick workaround is setting the C locale inside your code.
Use this beforce using your dae class:
1 | setlocale (LC_NUMERIC, "C"); |
ColladaDOM 1.4 deb packages i386
abr 8
Thanks, Cleto!
libcolladadom14_2.2-1_i386.deb
libcolladadom14-dev_2.2-1_i386.deb
These have no support for ZAE and are built with tinyxml instead of libxml(2).
Depends on:
1 | aptitude install libpcre++-dev libpcre++0 libpcre3-dev libpcre3 libboost-filesystem-dev libtinyxml-dev |
Compiling, add to LDFLAGS:
-lpcre -lpcrecpp -lboost_filesystem -lminizip -lcollada14dom
Spanish Note:
Estos paquetes contienen lo mismo que hay en este post, pero con dependencias y demás historias. Así no hace falta descargar el .tar.gz
ColladaDOM 1.4 en debian SID (32 bits)
abr 8
¿Quieres paquetes debian? ¡Pasa de este post y mira aquí! debian debs ColladaDOM 1.4 i386.
He tenido problemas utilizando colladadom en alguna máquina de 32 bits por culpa de libxml2 (o hasta ahí he llegado). Mientras que tras compilar con soporte de libxml2 en amd64 no he tenido ningún problema, al hacer lo mismo en 32 bits obtenía lo siguiente:
Error: Dosument is Empty
Así que he construido colladadom 1.4 (sin soporte ZAE, que a mi no me hace falta) contra tinyxml, en vez de libxml2 (por defecto en gnu/linux).
Adjunto el archivo que hay que descomprimir en /usr/local para poder usar ColladaDOM en Debian SID (a día 8 de Abril de 2010).
Para compilar, añadimos a las LDFLAGS del Makefile:
-lpcre -lpcrecpp -lboost_filesystem -lminizip -lcollada14dom
libminizip está en el tar.gz que os dejo, pero las demás dependencias las deberéis resolver de forma manual, esto es …
1 | aptitude install libpcre++-dev libpcre++0 libpcre3-dev libpcre3 libboost-filesystem-dev libtinyxml-dev |
Y eso es todo…
Happy Hacking!
Download: colladadom_sid_32bits-8April2010.tar.gz
Pausando un hilo (posix pthread) unos milisegundos.
mar 26
A menudo hace falta para la ejecución de un hilo ya que no queremos que consuma todo el tiempo de CPU, cuando, por ejemplo, hacemos un polling agresivo. Hay que tener en cuenta que sleep() no funciona puesto que para el proceso completamente.
Una posible solución es utilizar la siguiente función:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <sys/time.h> #include <pthread.h> ... int VideoSource::threadWait(int milliseconds){ pthread_mutex_t mutex; pthread_cond_t condition; struct timespec timewaited; struct timeval now; if(pthread_mutex_init(&mutex,NULL)) return -1; if(pthread_cond_init(&condition,NULL)) return -1; gettimeofday(&now, NULL); timewaited.tv_sec = now.tv_sec + milliseconds / 1000; timewaited.tv_nsec = now.tv_usec*1000 + (milliseconds % 1000)*1000000; return pthread_cond_timedwait(&condition, &mutex, &timewaited); } |
Ten en cuenta que los sistemas operativos no suelen ser de tiempo real y que además, en hacer los cálculos antes de la espera, se pierda un tiempo … pero bueno, puede ser útil para algunas cosas que no requieran precisión a nivel de ciclos.
![[bRue.org] [bRue.org]](http://www.brue.org/wp-content/uploads/logo_bw.png)