Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Affichage en openGL dans les desklets ... C'est bon ou pas ?
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Affichage en openGL dans les desklets ... C'est bon ou pas ?
Page : 1 2 3 4
nochka85 Français 79 nochka85 [Read]
04 March 2009 à 13:12

Tofe, Saturday 21 February 2009 à 15:09


Subscription date : 09 February 2008
Messages : 921
Réussi ! J'avais oublié un "CD_APPLET_REDRAW_MY_ICON" à la fin de ma méthode J'ai commité tout ça, si nochka veut jeter un coup d'oeil... En plus mon code est assez simple.

nochka85, Saturday 21 February 2009 à 15:34


Subscription date : 29 November 2007
Messages : 7408
Cool -> Je regarde çà ... surtout que je me prends la tête depuis ce matin à essayer faire un truc simple avec clock ! ... et sans succès ! -> Je comprends même pas comment on peut passer un simple png dans le render 2 texture

-> Bon, mis à jour faite ... je regarde le code

Par contre, j'ai un plantage dès que je rentre une boite pop3 (compte gmail) -> çà plante en boucle et revient sur le panneau de config en maintenance :

on_click_activate_given_group (mail)
message : (cairo-dock-modules.c:cairo_dock_activate_module:491)
cairo_dock_activate_module (mail)
message : (cairo-dock-modules.c:cairo_dock_instanciate_module:953)
cairo_dock_instanciate_module (/home/nochka85/.config/cairo-dock/current_theme/plug-ins/mail/mail.conf)
message : (cairo-dock-desklet.c:cairo_dock_create_desklet:951)
cairo_dock_create_desklet ()
debug : (cairo-dock-desklet.c:cairo_dock_configure_desklet:1049)
cairo_dock_configure_desklet (159x149 ; (-552,-430) ; 0,0,0)
debug : (cairo-dock-desklet.c:cairo_dock_configure_desklet:1067)
-> (600;434)
debug : (cairo-dock-X-utilities.c:cairo_dock_set_xwindow_type_hint:216)
cairo_dock_set_xwindow_type_hint (25167529, _NET_WM_WINDOW_TYPE_NORMAL=258)
debug : (cairo-dock-desklet.c:cairo_dock_configure_desklet:1090)
cairo_dock_configure_desklet (159x149 ; 0)
transparence du desklet...
cairo_dock_generate_file_path: assertion `cImageFile != NULL' failed
cairo_dock_generate_file_path: assertion `cImageFile != NULL' failed
cairo_dock_generate_file_path: assertion `cImageFile != NULL' failed
message : (cairo-dock-themes-manager.c:cairo_dock_get_theme_path:705)
cairo_dock_get_theme_path (/usr/share/cairo-dock/plug-ins/mail/themes, /home/nochka85/.config/cairo-dock/extras/mail, mail)
warning : (cairo-dock.c:_cairo_dock_intercept_signal:193)
Attention : Cairo-Dock has crashed (sig 11).
It will be restarted now.

Tofe, Saturday 21 February 2009 à 16:53


Subscription date : 09 February 2008
Messages : 921
mmmh... Pour GMail, je te conseille de prendre le type "GMail", ce sera mieux géré.

pour ton crash, tu pourrais le passer à ddd ? je ne le reproduis pas ici...

nochka85, Saturday 21 February 2009 à 17:21


Subscription date : 29 November 2007
Messages : 7408
Voilà :

http://uppix.net/e/3/2/2ee5cd430e8c4eacf416cbb7cba72t.jpg

.... sinon, pour l'analyse du code, c'est désespérant -> Je comprends rien du tout à tous ces myData et myConfig ... et encore moins à comment est organisé le tout

nochka85, Saturday 21 February 2009 à 17:40


Subscription date : 29 November 2007
Messages : 7408
Arggghhh je vais CRAAAQUER !!!!

Euh .... est-ce que quelqu'un pourrait me filer un coup de main ? <- Je voudrais juste faire une applet "hyper simple" ( = on ne s'occupe pas de la config ou des évenements au clic sauf le bouton droit pour afficher le menu ) ... bref, un truc simple qui irait juste charger une image donnée directement dans le répertoire data de l'applet (par exemple une image texture.png qui se trouverait dans data) et l'affecterait à une texture PUIS afficherait un simple carré texturé (avec texture.png donc) dans le desklet .... le tout avec le minimum de code (= je pars d'une applet vierge générée avec le script)

.... je sais, c'est simple (allez, 5 minutes chrono pour Fabounet ) ... mais çà fait 9 heures que je tourne en rond ... et j'en suis toujours à ZERO (<- Je comprends même pas comment spécifier mon image texture.png .... ni où spécifier çà )!!!

fabounet, Sunday 22 February 2009 à 14:46


Subscription date : 30 November 2007
Messages : 17118
un truc du style
cairo_dock_create_texture_from_image (image_path) ?

nochka85, Sunday 22 February 2009 à 15:05


Subscription date : 29 November 2007
Messages : 7408
Bah oui, je voudrais pouvoir "simplement" faire n'importe où dans le code (et dans n'importe quel .c) un :

GLuint maTexture;
maTexture = cairo_dock_create_texture_from_image("images/texture.png"); <- Dans le cas où mon image est dans le répertoire /usr/share/cairo-dock/plug-ins/mon_applet/images/

... pour ensuite pouvoir binder ma texture avec :

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, maTexture);

D'aileurs, j'ai même pas essayer de faire çà ... me dis pas que c'est déjà possible ?

Tofe, Sunday 22 February 2009 à 15:29


Subscription date : 09 February 2008
Messages : 921
Si tu veux je peux te guider dans le plugin mail, qui maintenant fait tout ça

Ne considère que "cd-mail-applet-init.c" et "cd-mail-applet-notification.c". Dans ce dernier, ne considère que "cd_mail_update_icon" et "cd_mail_render_3D_to_texture".

voici comment il fonctionne:
- dans l'init, je charge mon "thème" (je récupère les icones, je créé les texture OpenGL et je crée ma call list pour le cube.). Puis je m'abonne à CAIRO_DOCK_UPDATE_ICON_SLOW pour être appelé 10 fois par secondes dans "cd_mail_update_icon"
- dans "cd_mail_update_icon", justement, je fais les trucs intéressants: j'incrémente ma rotation, et je fais mon cube texturé OpenGL.
voilà, tout le reste c'est par rapport à la gestion des comptes mail, donc tu peux l'ignorer.

Là je suis en train de me pencher sur la vue "Carroussel", donc j'ai pas trop le temps de créer une applet "cube" simplifiée, mais en gros je partirais du plugin mail et je virerais 80% des trucs pour ne garder que ce que je viens de te décrire.

nochka85, Sunday 22 February 2009 à 15:52


Subscription date : 29 November 2007
Messages : 7408
J'avais déjà compris tout çà ... et déjà analyser le code ( <- Du moins ce que j'avais pu )

mais le problème que j'ai, c'est que je n'arrive pas à simplifier le code pour ne pas gérer de thème et prendre directement ma texture dans le répertoire de l'applet (sans gérer de myConfig.cPicture , myConfig.cPicture, myConfig.cThemePath, etc...) ... et je n'arrive vraiment pas à comprendre l'histoire du "static char s_cFileNames[CLOCK_ELEMENTS][30]" et du "scan" du répertoire du thème ...

Pour info, avec la SDL, j'utilise un loader d'image super pratique qui fonctionne comme décrit plus haut :

maTexture1 = loadTexture("texture1.png"); <- Prend l'image directement dans le répertoire du programme
maTexture2 = loadTexture("data/texture2.png"); <- Prend l'image dans le répertoire data qui se trouve dans le répertoire du programme
maTexture3 = loadTexture("../data/texture3.png"); <- Prend l'image dans le répertoire data qui se trouve un cran en dessous du répertoire du programme
maTexture4 = loadTexture("./home/nochka85/images/texture4.png"); <- Prend l'image dans le répertoire indiqué

Ensuite, pour simplifier encore plus le code, pourquoi ne pas imaginer un truc du même style que printf :
maTexture5 = loadTexture("./usr/share/cairo-dock/clock/%s/texture4.png", myConfig.cThemePath); <- Pour prendre la texture dans le répertoire du thème spécifié dans la config



... mais bref, ceci mis à part, je ne comprend VRAIMENT pas comment je peux faire actuellement pour faire un simple :

maTexture1 = loadTexture("texture1.png");

Bref, c'est la dessus que j'aurais besoin d'un coup de main

Tofe, Sunday 22 February 2009 à 16:17


Subscription date : 09 February 2008
Messages : 921
Oki. Je te propose donc, si ton path est relatif au répertoire de ton applet:
cImagePath = g_strdup_printf ("%s/%s", MY_APPLET_SHARE_DATA_DIR, "textures/texture1.png");
maTexture = cairo_dock_create_texture_from_image(cImagePath);


J'ai bien compris la question ?

nochka85, Sunday 22 February 2009 à 16:47


Subscription date : 29 November 2007
Messages : 7408
Tout à fait ! -> Je teste çà tout de suite

nochka85, Sunday 22 February 2009 à 17:02


Subscription date : 29 November 2007
Messages : 7408
Bon, çà fonctionne impeccable avec cette fonction :

void cd_opengl_load_texture (CairoDockModuleInstance *myApplet, gchar *texture)
{
    gchar *cImagePath;
    
    if (CD_APPLET_MY_CONTAINER_IS_OPENGL)
    {
            cImagePath = g_strdup_printf ("%s/%s", MY_APPLET_SHARE_DATA_DIR, texture);        
            myData.iPicture = cairo_dock_create_texture_from_image(cImagePath);
    }
    else
    {
        myData.iPicture = 0;
    }

cd_debug( "cd_opengl_test : myData.iPicture = %d", myData.iPicture );
}


qu'il me suffit donc d'appeler en faisant par exemple :
cd_opengl_load_texture (myApplet, "texture.png");


... Merci Tofe

nochka85, Sunday 22 February 2009 à 19:17


Subscription date : 29 November 2007
Messages : 7408
Tiens, j'ai un petit soucis (déjà vu et revu à chaque fois que quelqu'un a voulu créer sa première applet ) : Au lancement, le desklet (ou l'icone s'il est dans le dock) ne s'affiche pas -> Il faut survoler le desklet (ou rentrer dans le dock pour le voir affiché)

Bref, c'est quoi qu'il faut faire ?

... Sinon, c'est cool : Grace à Tofe, j'ai mon cube texturé qui tourne

Sinon, une petite remarque concernant le UPDATE_ICON_SLOW -> Mon cube tourne donc à 10 FPS .... ok ! Mais du coup, lorsque je le fait rentrer dans le dock -> PAF ! 30 FPS ... et il tourne donc 3x plus vite

Donc, 2 choses :
- Y'a t'il un moyen dans mon code de tester où se trouve l'applet (détaché ou dans le dock) afin d'ajuster sa vitesse de rotation en conséquence ?
- @Fab : est-ce que tu pourrais rajouter un UPDATE_ICON_FAST à 30 fps ? .... parce que là, suivant ce que l'on veut faire, çà saccade un peu tout de même <- J'ai voulu faire tourner mon cube un peu vite, et c'est pas très "zoli"

KmY, Sunday 22 February 2009 à 19:23


Subscription date : 06 December 2007
Messages : 318
Tiens, j'ai un petit soucis (déjà vu et revu à chaque fois que quelqu'un a voulu créer sa première applet ) : Au lancement, le desklet (ou l'icone s'il est dans le dock) ne s'affiche pas -> Il faut survoler le desklet (ou rentrer dans le dock pour le voir affiché)


ça le fait aussi avec l'applet Pingouin, qui ne fonctionne plus vraiment d'ailleurs

nochka85, Sunday 22 February 2009 à 19:37


Subscription date : 29 November 2007
Messages : 7408
chez moi le pingouin est désespérément transparent et très sombre

Tofe, Sunday 22 February 2009 à 20:10


Subscription date : 09 February 2008
Messages : 921
Un petit "CD_APPLET_REDRAW_MY_ICON" manquant ? ^^

aussi, il y a le pointeur "myDock": s'il est pas NULL, alors tu es dans le dock. Dans ce cas, myDesklet devrait être non NULL, par opposition.

nochka85, Sunday 22 February 2009 à 20:13


Subscription date : 29 November 2007
Messages : 7408
Bah oui mais où je le mets ? -> Bon, je vais en coller partout !

Tofe, Sunday 22 February 2009 à 20:19


Subscription date : 09 February 2008
Messages : 921
Un autre problème qui peut t'arriver est que tu n'as pas encore défini le type de container que tu veux (ici, sûrement "Simple"). Du coup tu n'es pas encore "officiellement" dans un desklet OpenGL, et le refresh de ton cube OpenGL n'est pas fait. J'ai bon ?

nochka85, Sunday 22 February 2009 à 23:33


Subscription date : 29 November 2007
Messages : 7408
Bon, j'ai trouvé

... j'avais bien mon type de container de défini ("Simple") , et il ne me manquait aucun CD_APPLET_REDRAW_MY_ICON .... Le seul truc, c'est que je ne demandais RIEN à afficher à l'init ... Bref, un petit "cairo_dock_launch_animation (myContainer);" dans le CD_APPLET_INIT_BEGIN (juste après l'enregistrement des notifications) et çà roule !

A part çà, j'aurais une petite question annexe : Dans la section CD_APPLET_RESET_DATA_BEGIN , on est censé libérer tout ce qu'on a utilisé ... donc, j'y est collé un "glDeleteTextures (1, &myData.iPicture);" . Par contre, concernant toutes les variables type guint,gboolean,gint,gchar qui ne servent donc plus si on ferme l'applet , comment on fait pour les libérer ? <- est-ce qu'on utilise "g_free (ma_variable)" quel que soit le type ?

fabounet, Tuesday 24 February 2009 à 00:12


Subscription date : 30 November 2007
Messages : 17118
g_free pour les chaines allouées avec g_strdup_xxx

si vous avez des idées pour simplifier le code des applets, je peux rajouter des macros à gogo

if (myDock)
{
code en mode dock
}
else if (myDesklet)
{
code en mode desklet
}

mais normalement il y'a très peu de différence entre les 2, c'est le but.

oui je peux rajouter la boucle rapide pour les desklets, mais n'en abusez pas, pensez aux portables

Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Affichage en openGL dans les desklets ... C'est bon ou pas ?
Page : 1 2 3 4
nochka85 Français 79 nochka85 [Read]
04 March 2009 à 13:12


Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Affichage en openGL dans les desklets ... C'est bon ou pas ? Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.