Foros de daboweb

HARDWARE Y SISTEMAS OPERATIVOS, GNU/Linux, Windows, Mac => GNU/Linux, Unix, *BSD and Free Software, Android => Mensaje iniciado por: Jaleos en 29 de Junio de 2008, 06:51:48 pm

Título: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Jaleos en 29 de Junio de 2008, 06:51:48 pm
:) Bueno, nuevas cosas, nuevas dudas...

Sabemos que ejecutando Kdcop con Kaffeine funcionando tenemos acceso gráfico a las llamadas a DCOP que admite, por ejemplo, Kaffeine.

Aquí
http://osdir.com/ml/video.kaffeine.devel/2006-12/msg00010.html (http://osdir.com/ml/video.kaffeine.devel/2006-12/msg00010.html)
Tenemos el ejemplo (y creación) de una nueva llamada.

La pregunta es..¿Sabéis donde se agrega el código? ¿Será en algún fichero de Kaffeine, o por el contrario será en algún misterioso fichero de DCOP?

Saludos
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Dabo en 15 de Julio de 2008, 11:51:19 pm
Se me había pasado este post amigo, a ver si logro ver algo y te comento, saludos -;)
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Peibol en 16 de Julio de 2008, 10:27:56 pm
Por lo que puedo ver ese código (soy programador pero no de C++) modifica Kaffeine para aceptar un tipo de llamada, el tema es ¿desde que aplicación quieres llamar?, supongo que será más interesante ver si el cliente reconoce el servicio.

Salu2
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Jaleos en 20 de Julio de 2008, 09:27:35 pm
Hola Peibol y Dabo.
No podía contestar, porque no era capaz de que me cargara la web, gracias a Liamngls, que me recomendó anony mouse, puedo hacerlo.

Vamos a ver Peibol...
Citar
Por lo que puedo ver ese código (soy programador pero no de C++) modifica Kaffeine para aceptar un tipo de llamada, el tema es ¿desde que aplicación quieres llamar?,
Creo que es irexec.
El tema es que tengo hecho un "Como-truco" para hacer funcionar el mando RM-FP de Avermedia, lo puedes ver aquí mismo en el foro de linux, con una chinchetilla.
Si te fijas, en las llamadas a dcop que utiliza el archivo .lircrc no hay ninguna que se refiera a "instant record", el caso es que buscando por google encontré esas lineas de código que implementan la función.
Pero claro, no sé donde ni como se puede agregar dicho código, :) hasta ahí no me llegan los conocimientos.
No sé si es en algún archivo nuevo en Kaffeine, en Lirc, en alguno que tenga que ver con Dcop, que no se nada de él, o hay que copiarlo al final de alguno de los archivos de esas aplicaciones.
Ni siquiera sé si la función ya está disponible por las nuevas versiones de Kaffeine, yo en la que tengo ahora en uso, cuando ejecuto Kdcop no la veo por ningún lado, quizás no mire bien....

Citar
supongo que será más interesante ver si el cliente reconoce el servicio.

Pues ¿me podrias decir como lo compruebo?, con alguna ligera explicación...soy aplicado   :destroyer:

Saludos
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Peibol en 21 de Julio de 2008, 04:58:26 pm
En primer lugar, el código que aportas es un diff, o patch, según se lo quiera ver, esto se aplica al código de kaffeine utilizando el comando patch en bash. Asegurate de tener la versión correcta del código ya que sino el parche no aplicará.

Luego, para enterarte si kaffeine está aportando la funcionalidad que pides lo suyo sería probarla desde bash, mira, por ejemplo aqui tienes una breve explicación de como se invoca dcop desde bash: http://mundogeek.net/traducciones/oregan2.html
Todo esto sería considerando que has modificado el código de kaffeine y luego lo has recompilado/instalado.

En caso de que no lo reconozca, por lo que estoy leyendo aqui: http://www.usenix.org/event/usenix04/tech/freenix/full_papers/faure/faure_html/node6.html DCOP utiliza un sistema de reflexión para enterarse de que tiene (objetos, funciones, etc), por lo que la manera de registrar tu nueva función sería simplemente creando/modificando el fichero de cabecera siguiendo las reglas de la interfaz de dcop. Tal vez te toque luego volver a compilar el servidor de dcop para que este incluya la interfaz correspondiente en su proceso de compilación, esto ya no lo se.

Aquí tienes aún más información al respecto: http://developer.kde.org/documentation/other/dcop.html#sec2.3

Comprueba primero si aparece en la lista de funciones solamente recompilando kaffeine, sino tendrás que ir un paso más allá.

Salu2
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Dabo en 22 de Julio de 2008, 12:07:45 am
Gracias por la info Peibol, creo que con esto lo arreglará -;)
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Jaleos en 24 de Julio de 2008, 06:50:49 pm
 :haha: :haha: :haha: O lo destrozará..... :haha:
Un poco complicado para mi después de un vistazo rápido, intentaré digerirlo este finde. A ver si me entero de algo y puedo hacer una pregunta "digna".
Saludos
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Jaleos en 30 de Julio de 2008, 11:43:47 pm
Bueno, bueno, bueno..me voy enterando de algo pero aún necesito ayuda.

Ya tengo descomprimido el tar.bz2 y localizados los archivos a los que se refieren las cabeceras del diff, y por ejemplo, en Kaffeine.cpp, en la sección DCOP INTERFACE no hay ninguna acción "instant record", hasta ahí bien ( ¡lo que me costó comprender que tenia que bajarme el código fuente!  :danae: ).
Desde bash tampoco aparece la función, claro, sin recompilar..

Para aplicar el parche he hecho:
Copiar el contenido del diff que proponen y hacer un archivo "instant.diff".
Moverlo a la carpeta del código de Kaffeine donde apuntan las cabeceras del diff (kaffeine-0.8.7/kaffeine/src).

Y
Código: [Seleccionar]
jaleos@Core-Duo:~/Escritorio/kaffeine-0.8.7/kaffeine/src$ patch < instantcpp.diff
patching file kaffeine.cpp
patch: **** malformed patch at line 19:
Aquí le quité un espacio que había delante de la # en la linea 19 del diff y me pasó el error a la siguiente linea, vease

Código: [Seleccionar]
jaleos@Core-Duo:~/Escritorio/kaffeine-0.8.7/kaffeine/src$ patch < instant.diffpatching file kaffeine.cpp
patch: **** malformed patch at line 20:
Aquí le quito una linea en blanco entre la linea 19 y 20,  :pardiez: y la misma de antes

Código: [Seleccionar]
jaleos@Core-Duo:~/Escritorio/kaffeine-0.8.7/kaffeine/src$ patch < instant.diff
patching file kaffeine.cpp
patch: **** malformed patch at line 21: Index: /home/tomas/multimedia2/kaffeine/src/kaffeine.h
 
Y aquí, como no le quite la cartera :) . Atascado estoy y no salgo.

Se supone que la primera parte del diff debería aplicar, porque ya no da errores,  todo esto será por....
Citar
Asegurate de tener la versión correcta del código ya que sino el parche no aplicará
Este diff es de hace 2 años, quizás sea eso, ¿cuestión de versiones?.

¿No sería más fácil, ya que es poco código y además no elimina ninguna linea, cambiar los archivos a mano? ¿puede que funcione luego?

Saludos
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Peibol en 31 de Julio de 2008, 08:56:36 pm
Los diff son ficheros muy simples que solo indican que lineas se agregan y cuales se eliminan, tranquilamente puedes hacerlo a mano. Incluso en lo que respecta al código, por lo que pude ver son funciones nuevas que ya están anunciadas en los ficheros de cabecera, por lo que no deberías tener ningún problema en agregar las líneas que tienen un + por delante directamente al código que te has descargado.

Si miras el fichero, se agrega esto

void Kaffeine::setRecord()
{
#ifdef HAVE_DVB
       if ( dvbPanel )
              dvbPanel->setRecord();
#endif
}

alrededor de la línea 1901 del fichero kaffeine.cpp

Si miras los demás trozos del patch:

Index: /home/tomas/multimedia2/kaffeine/src/kaffeine.h
===================================================================
--- /home/tomas/multimedia2/kaffeine/src/kaffeine.h     (revision 611002)
+++ /home/tomas/multimedia2/kaffeine/src/kaffeine.h     (working copy)
@@ -113,6 +113,7 @@
        void quit();
        void setNumber( int num );
        void dvbNewTimer( QString name, QString channel, QString datetime,
QString duration );
+       void setRecord();
        int dvbSNR( int device );
        void dvbOSD();
        void playDvb();

Te indica que se va a modificar el fichero kaffeine.h (fichero de cabecera cpp), y que en la línea 113 se agrega el prototipo de función "void setRecord()" que has definido en la parte anterior del parche. Así con todos los "Index" que aparecen.

Lo malo de los ficheros diff es que si las líneas no concuerdan por un espacio el parche no aplica y te da los mensajes de error que te está dando. Por lo que te conviene hacerlo a mano porque tardarás menos.

Luego me cuentas que tanto te complica para compilar, que eso es otro mundo.

Salu2
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Jaleos en 03 de Agosto de 2008, 11:24:48 am
Hola Peibol.
Primero, muchas gracias por la explicación y confirmación.
Bueno, ya están hechos los cambios en los tres archivos a que se refiere el diff, a mano.
He llegado a hacer el make así:

Código: [Seleccionar]
apt-get build-dep kaffeine
./configure
make

Como la seda, no da ningún error, hasta aquí parece todo bien.

Actualmente tengo instalada y configurada óptimamente la versión 0.8.6 de Kaffeine en Gnome, usando KDE 3.5.9, supongo que cuando haga el make install tendré que tener desinstalada ésta versión, claro, no quiero perder el trabajo hecho, ¿si guardo la configuración de /home/jaleos/.kde/share/apps/kaffeine seria facil restaurarla?

Otra pregunta, ¿cuando haces "./configure" y "make" se producen cambios en el archivo de fuentes bajado (y parcheado)?.
Lo digo por usar esas mismas fuentes, porque estoy por hacer la instalación en una live-cd, a ver como se comporta y si aparece implementada la nueva función.
(Según escribo) Sí, creo que eso haré, a no ser que me recomiendes otro procedimiento....

Saludos
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Peibol en 21 de Agosto de 2008, 11:37:55 am
Hola, genial que hayas podido modificar todo y compilar correctamente, ya me cuentas si se comporta como debe  ;-)

El ./configure lo que hace es comprobar que tiene todo lo necesario para realizar la compilación, la cual se dispara justamente con el comando make. Tanto cuando verificas dependencias (./configure) como cuando compilas las fuentes (make) no se modifica nada del código, por lo que no deberías tener ningún problema en guardar las fuentes o incluír el paquete compilado que reemplace el kaffeine del livecd que estés haciendo.

Salu2
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Dabo en 21 de Agosto de 2008, 09:47:50 pm
Bien bien, parece que todo funciona, como dice el amigo Peibol ya nos contarás -;)
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Jaleos en 22 de Agosto de 2008, 01:18:23 pm
Holas..
He logrado ver, instalando Kaffeine en el live-cd, con  dcop kaffeine KaffeineIface, que sí está la nueva función.
Pero...,siempre hay peros :) , el live-cd se queda sin espacio en disco cuando instalo lo necesario para que la capturadora funcione. Como solo tengo 1 GB de RAM he probado a usar KVM/QEMU pero..con un lspci no reconoce la tarjeta, no se si se podrá virtualizar, en Google he encontrado esto:
Código: [Seleccionar]
http://kvm.qumranet.com/kvmwiki/hotadd_pci_devicesdonde hablan de tarjetas de red pci.
Y esto:
Código: [Seleccionar]
http://forums.virtualbox.org/viewtopic.php?t=8141&sid=50cf715f2afd04920014c156110c982ddonde me parece entender (inglés a mi :) ) que VBoxSDL sí lo tiene implementado, pero ni zorra.

Ahora estoy reparticionando el DD para hacer otra instalación del sistema y todo eso, ya veremos como funciona la función en el mando.
Saludos
Título: Re: ¿Como agregar nuevas llamadas a DCOP (o KDCOP)?
Publicado por: Peibol en 25 de Agosto de 2008, 07:38:03 pm
Si se queda sin espacio en disco simplemente monta cualquier unidad que tengas disponible y usa esa para grabar. Es normal que un livecd no sea lo más rapido ya que el tiempo de acceso de una unidad optica se suele medir en décimas de segundo, una eternidad en tiempo informático.

Salu2