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 Portage en GTK+-3.0: problème avec GtkGLExt
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] Portage en GTK+-3.0: problème avec GtkGLExt
matttbe Français 14 fabounet [Read]
12 January 2012 à 16:31

matttbe, Monday 27 June 2011 à 22:33


Subscription date : 24 January 2009
Messages : 12573
Hello,

Je l'avais déjà évoqué, le port du dock pour utiliser GTK+-3.0 ne pouvait se faire facilement car GtkGLExt ne supporte pas (encore?) lui-même GTK+-3.0.
J'ai lancé la discussion sur la ML de ce projet, voici le sujet: http://mail.gnome.org/archives/gtkglext-list/2011-June/thread.html
D'après le dernier message, il ne faut pas s'attendre à un port dans les semaines qui viennent car ça ne semble pas intéresser beaucoup de monde pour le moment. D'un autre côté, ce message explique qu'il est possible d'utiliser des mêmes fonctions OpenGL dans en environnement GTK en se passant de GtkGLExt: http://mail.gnome.org/archives/gtkglext-list/2011-June/msg00003.html (avec un exemple et un cas concret!)

fabounet, Tuesday 28 June 2011 à 12:15


Subscription date : 30 November 2007
Messages : 17118
ah merci !
effectivement il n'y a pas grand chose dans cette lib en fait (et j'avais même hésité à m'en passer, avant de me dire que comme ça, si quelque chose changeait, la couche entre les 2 m'éviterait de casser mon code après il faut pas s'étonner si les éditeurs proprios ne développent rien sous Linux bon j'arrête de troller ! )

j'imagine qu'on a encore du temps avant que gtk2 ne soit plus intégré par défaut dans les distros, donc temporisons un peu (j'aimerais éviter de rajouter trop de dépendances à X).

matttbe, Wednesday 29 June 2011 à 09:50


Subscription date : 24 January 2009
Messages : 12573
Ok même si ça aurait été cool un support de GTK3 (c'est "l'avenir" et énormément d'applications passent à GTK3 ).

j'aimerais éviter de rajouter trop de dépendances à X
mais ça fait une dépendance en moins (et une de type GTK )

fabounet, Wednesday 29 June 2011 à 16:49


Subscription date : 30 November 2007
Messages : 17118
oui on y viendra.
mais pour l'instant si gtkglext est portée, ça nous fera autant de travail en moins

matttbe, Wednesday 29 June 2011 à 17:46


Subscription date : 24 January 2009
Messages : 12573
mais pour l'instant si gtkglext est portée, ça nous fera autant de travail en moins
Oui mais ce n'est pas prévu pour tout de suite...

matttbe, Sunday 20 November 2011 à 15:32


Subscription date : 24 January 2009
Messages : 12573
Merci Fabounet, nous voilà débarrassé de GtkGLExt (en fait, qu'est-ce que ça change exactement avec les dernières modifs? qu'est-ce qu'on y perd?)

Par contre, je me demandais ce que tu avais avec la rev 930 (la dernière que tu as pushée)? Car j'ai dû faire plusieurs modifs (rev 931) pour que ça refonctionne avec GTK2. Enfin, ça ne m'a absolument pas dérangé, j'étais même content de les faire et j'espère que j'ai bien fait ça (un revert est tjs possible ) mais c'est juste que ça ne te ressemble pas ces push qui rendent la partie core du dock totalement impossible à compiler. Enfin, c'est p-ê parce que je suis sur Ubuntu Precise mais vu les modifs, ça m'étonnerait. Ou alors un push sur une mauvaise branche? (ce serait dommage car l'intention était très bonne )

Pour le reste des modifications à faire pour un port vers GTK3, il y a ce document: http://developer.gnome.org/gtk3/3.3/gtk-migrating-2-to-3.html. Il y a p-ê plus de modifs à faire que d'utiliser plus de fonctions de cairo...

Concernant GtkGLExt, il y a eu ce message ce matin: https://mail.gnome.org/archives/gtkglext-list/2011-November/msg00000.html, un portage p-ê pour bientôt?

PS: dans la rev 931, il y a deux "@ FABOUNET", pourrais-tu y jeter un coup d'oeil et éventuellement modifier le commentaire?

fabounet, Monday 21 November 2011 à 13:09


Subscription date : 30 November 2007
Messages : 17118
je n'ai aucune excuse valable
merci d'être passé (encore une fois) derrière moi pour réparer les dégâts

pour les questions: oui pour libcurl, et le if(0) est normal (on n'utilise pas OpenGL pour les dialogues car peu d'intérêt, car il n'y a pas d'animations ni d'icônes dedans, même si on pourrait, mais faudrait coder les moteurs de rendu).

je poursuis le portage, il faut s'attendre à quelques instabilités dans les jours à venir

PS: merci pour MP au fait

matttbe, Monday 21 November 2011 à 13:21


Subscription date : 24 January 2009
Messages : 12573
avec plaisir

ok, je corrigerais les @ fabounet

fabounet, Friday 25 November 2011 à 12:13


Subscription date : 30 November 2007
Messages : 17118
bon, ça avance, mais c'est nettement plus long que je pensais
enfin le core est bientôt prêt, et après j'aurais une surprise

matttbe, Friday 25 November 2011 à 12:32


Subscription date : 24 January 2009
Messages : 12573
Chouette

N'hésite pas à pusher sur une branche parallèle

matttbe, Wednesday 21 December 2011 à 21:41


Subscription date : 24 January 2009
Messages : 12573
Je vois que le paquet "libgnome-menu-3.0" est disponible!
Par contre, ils en ont profité pour faire des changements dans l'API... Voici le diff du fichier gmenu-tree.h
--- /usr/include/gnome-menus/gmenu-tree.h    2011-08-26 12:22:41.000000000 +0200
+++ /usr/include/gnome-menus-3.0/gmenu-tree.h    2011-10-05 12:36:12.000000000 +0200
@@ -1,+1,@@
  *
- * 
Copyright (C2004 Red HatInc.
+ * 
Copyright (C20042011 Red HatInc.
  *
  * 
This library is free softwareyou can redistribute it and/or
  * 
modify it under the terms of the GNU Lesser General Public
@@ -
24,21 +24,34 @@
 
#error "libgnome-menu should only be used if you understand that it's subject to frequent change, and is not supported as a fixed API/ABI or as part of the platform"
 #endif
 
-#include <glib.h>
+#include <gio/gdesktopappinfo.h>
 
 
G_BEGIN_DECLS
 
-typedef struct GMenuTree          GMenuTree;
-
typedef struct GMenuTreeItem      GMenuTreeItem;
+
#define GMENU_TYPE_TREE         (gmenu_tree_get_type ())
+#define GMENU_TREE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GMENU_TYPE_TREE, GMenuTree))
+#define GMENU_TREE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GMENU_TYPE_TREE, GMenuTreeClass))
+#define GMENU_IS_TREE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GMENU_TYPE_TREE))
+#define GMENU_IS_TREE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GMENU_TYPE_TREE))
+#define GMENU_TREE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_DESKTOP_APP_INFO, GMenuTreeClass))
+
+
typedef struct _GMenuTree        GMenuTree;
+
typedef struct _GMenuTreeClass   GMenuTreeClass;
+
+
struct _GMenuTreeClass
+{
+  
GObjectClass parent_class;
+};
+
+
GType gmenu_tree_get_type (voidG_GNUC_CONST;
+
+
typedef struct GMenuTreeIter      GMenuTreeIter;
 
typedef struct GMenuTreeDirectory GMenuTreeDirectory;
 
typedef struct GMenuTreeEntry     GMenuTreeEntry;
 
typedef struct GMenuTreeSeparator GMenuTreeSeparator;
 
typedef struct GMenuTreeHeader    GMenuTreeHeader;
 
typedef struct GMenuTreeAlias     GMenuTreeAlias;
 
-
typedef void (*GMenuTreeChangedFunc) (GMenuTree *tree,
-                      
gpointer  user_data);
-
 
typedef enum
 
{
   
GMENU_TREE_ITEM_INVALID 0,
@@ -
49,105 +62,87 @@
   
GMENU_TREE_ITEM_ALIAS
 
GMenuTreeItemType;
 
-
#define GMENU_TREE_ITEM(i)      ((GMenuTreeItem *)(i))
-#define GMENU_TREE_DIRECTORY(i) ((GMenuTreeDirectory *)(i))
-#define GMENU_TREE_ENTRY(i)     ((GMenuTreeEntry *)(i))
-#define GMENU_TREE_SEPARATOR(i) ((GMenuTreeSeparator *)(i))
-#define GMENU_TREE_HEADER(i)    ((GMenuTreeHeader *)(i))
-#define GMENU_TREE_ALIAS(i)     ((GMenuTreeAlias *)(i))
+GType gmenu_tree_iter_get_type (void);
+
+
/* Explicitly skip item, it's a "hidden" base class */
+GType gmenu_tree_directory_get_type (void);
+
GType gmenu_tree_entry_get_type (void);
+
GType gmenu_tree_separator_get_type (void);
+
GType gmenu_tree_header_get_type (void);
+
GType gmenu_tree_alias_get_type (void);
 
 
typedef enum
 
{
   
GMENU_TREE_FLAGS_NONE                0,
   
GMENU_TREE_FLAGS_INCLUDE_EXCLUDED    << 0,
-  
GMENU_TREE_FLAGS_SHOW_EMPTY          << 1,
-  
GMENU_TREE_FLAGS_INCLUDE_NODISPLAY   << 2,
-  
GMENU_TREE_FLAGS_SHOW_ALL_SEPARATORS << 3,
-  
GMENU_TREE_FLAGS_MASK                0x0f
+  GMENU_TREE_FLAGS_INCLUDE_NODISPLAY   << 1,
+  
/* leave some space for more include flags */
+  GMENU_TREE_FLAGS_SHOW_EMPTY          << 8,
+  
GMENU_TREE_FLAGS_SHOW_ALL_SEPARATORS << 9,
+  
/* leave some space for more show flags */
+  GMENU_TREE_FLAGS_SORT_DISPLAY_NAME   << 16
 
GMenuTreeFlags;
+
GType gmenu_tree_flags_get_type (void);
+
#define GMENU_TYPE_TREE_FLAGS (gmenu_tree_flags_get_type ())
 
-typedef enum
-{
-  
#define GMENU_TREE_SORT_FIRST GMENU_TREE_SORT_NAME
-  GMENU_TREE_SORT_NAME 0,
-  
GMENU_TREE_SORT_DISPLAY_NAME
-  #define GMENU_TREE_SORT_LAST GMENU_TREE_SORT_DISPLAY_NAME
-} GMenuTreeSortKey;
-
-
GMenuTree *gmenu_tree_lookup (const char     *menu_file,
-                  
GMenuTreeFlags  flags);
-
-
GMenuTree *gmenu_tree_ref   (GMenuTree *tree);
-
void       gmenu_tree_unref (GMenuTree *tree);
-
-
void     gmenu_tree_set_user_data (GMenuTree       *tree,
-                   
gpointer        user_data,
-                   
GDestroyNotify  dnotify);
-
gpointer gmenu_tree_get_user_data (GMenuTree       *tree);
+
GMenuTree *gmenu_tree_new (const char     *menu_basename,
+                           
GMenuTreeFlags  flags);
+
+
GMenuTree *gmenu_tree_new_for_path (const char     *menu_path,
+                                    
GMenuTreeFlags  flags);
+
+
gboolean   gmenu_tree_load_sync (GMenuTree  *tree,
+                                 
GError    **error);
 
-const 
char         *gmenu_tree_get_menu_file           (GMenuTree  *tree);
+const 
char         *gmenu_tree_get_canonical_menu_path (GMenuTree  *tree);
 
GMenuTreeDirectory *gmenu_tree_get_root_directory      (GMenuTree  *tree);
 
GMenuTreeDirectory *gmenu_tree_get_directory_from_path (GMenuTree  *tree,
                             const 
char *path);
-
-
GMenuTreeSortKey     gmenu_tree_get_sort_key (GMenuTree        *tree);
-
void                 gmenu_tree_set_sort_key (GMenuTree        *tree,
-                          
GMenuTreeSortKey  sort_key);
-
-
+
GMenuTreeEntry     *gmenu_tree_get_entry_by_id         (GMenuTree  *tree,
+                            const 
char *id);
 
 
gpointer gmenu_tree_item_ref   (gpointer item);
 
void     gmenu_tree_item_unref (gpointer item);
 
-
void     gmenu_tree_item_set_user_data (GMenuTreeItem   *item,
-                    
gpointer        user_data,
-                    
GDestroyNotify  dnotify);
-
gpointer gmenu_tree_item_get_user_data (GMenuTreeItem   *item);
-
-
GMenuTreeItemType   gmenu_tree_item_get_type   (GMenuTreeItem *item);
-
GMenuTreeDirectory *gmenu_tree_item_get_parent (GMenuTreeItem *item);
-
-
-
GSList     *gmenu_tree_directory_get_contents          (GMenuTreeDirectory *directory);
+
GMenuTreeDirectory *gmenu_tree_directory_get_parent    (GMenuTreeDirectory *directory);
 const 
char *gmenu_tree_directory_get_name              (GMenuTreeDirectory *directory);
+const 
char *gmenu_tree_directory_get_generic_name      (GMenuTreeDirectory *directory);
 const 
char *gmenu_tree_directory_get_comment           (GMenuTreeDirectory *directory);
-const 
char *gmenu_tree_directory_get_icon              (GMenuTreeDirectory *directory);
+
GIcon      *gmenu_tree_directory_get_icon              (GMenuTreeDirectory *directory);
 const 
char *gmenu_tree_directory_get_desktop_file_path (GMenuTreeDirectory *directory);
 const 
char *gmenu_tree_directory_get_menu_id           (GMenuTreeDirectory *directory);
-
GMenuTree  *gmenu_tree_directory_get_tree              (GMenuTreeDirectory *directory);
 
 
gboolean gmenu_tree_directory_get_is_nodisplay (GMenuTreeDirectory *directory);
 
+
GMenuTreeIter      *gmenu_tree_directory_iter            (GMenuTreeDirectory *directory);
+
+
GMenuTreeIter      *gmenu_tree_iter_ref                  (GMenuTreeIter *iter);
+
void                gmenu_tree_iter_unref                (GMenuTreeIter *iter);
+
+
GMenuTreeItemType   gmenu_tree_iter_next                 (GMenuTreeIter *iter);
+
GMenuTreeDirectory *gmenu_tree_iter_get_directory        (GMenuTreeIter *iter);
+
GMenuTreeEntry     *gmenu_tree_iter_get_entry            (GMenuTreeIter *iter);
+
GMenuTreeHeader    *gmenu_tree_iter_get_header           (GMenuTreeIter *iter);
+
GMenuTreeAlias     *gmenu_tree_iter_get_alias            (GMenuTreeIter *iter);
+
 
char *gmenu_tree_directory_make_path (GMenuTreeDirectory *directory,
                       
GMenuTreeEntry     *entry);
 
 
-const 
char *gmenu_tree_entry_get_name               (GMenuTreeEntry *entry);
-const 
char *gmenu_tree_entry_get_generic_name       (GMenuTreeEntry *entry);
-const 
char *gmenu_tree_entry_get_display_name       (GMenuTreeEntry *entry);
-const 
char *gmenu_tree_entry_get_comment            (GMenuTreeEntry *entry);
-const 
char *gmenu_tree_entry_get_icon               (GMenuTreeEntry *entry);
-const 
char *gmenu_tree_entry_get_exec               (GMenuTreeEntry *entry);
-
gboolean    gmenu_tree_entry_get_launch_in_terminal (GMenuTreeEntry *entry);
+
GDesktopAppInfo    *gmenu_tree_entry_get_app_info       (GMenuTreeEntry *entry);
+
GMenuTreeDirectory *gmenu_tree_entry_get_parent         (GMenuTreeEntry *entry);
 
 const 
char *gmenu_tree_entry_get_desktop_file_path (GMenuTreeEntry *entry);
 const 
char *gmenu_tree_entry_get_desktop_file_id   (GMenuTreeEntry *entry);
 
 
gboolean gmenu_tree_entry_get_is_excluded  (GMenuTreeEntry *entry);
-
gboolean gmenu_tree_entry_get_is_nodisplay (GMenuTreeEntry *entry);
 
 
GMenuTreeDirectory *gmenu_tree_header_get_directory (GMenuTreeHeader *header);
 
-
GMenuTreeDirectory *gmenu_tree_alias_get_directory (GMenuTreeAlias *alias);
-
GMenuTreeItem      *gmenu_tree_alias_get_item      (GMenuTreeAlias *alias);
-
-
void gmenu_tree_add_monitor    (GMenuTree            *tree,
-                
GMenuTreeChangedFunc  callback,
-                
gpointer             user_data);
-
void gmenu_tree_remove_monitor (GMenuTree            *tree,
-                
GMenuTreeChangedFunc  callback,
-                
gpointer             user_data);
-
void gmenu_tree_set_desktop_session_name (char *);
+
GMenuTreeDirectory *gmenu_tree_alias_get_directory         (GMenuTreeAlias *alias);
+
GMenuTreeItemType   gmenu_tree_alias_get_aliased_item_type (GMenuTreeAlias *alias);
+
GMenuTreeDirectory *gmenu_tree_alias_get_aliased_directory (GMenuTreeAlias *alias);
+
GMenuTreeEntry     *gmenu_tree_alias_get_aliased_entry     (GMenuTreeAlias *alias);
 
 
G_END_DECLS
 
et donc ça demande une remise en forme du code pour l'utiliser
Il faudra plus que simplement cette modif:
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt    2011-12-21 15:12:31 +0000
+++ CMakeLists.txt    2011-12-21 20:12:05 +0000
@@ -415,+415,11 @@
 
message (STATUS "> GMenu:")
 
set (with_gmenu "no")
 if (
NOT "${enable-gmenu}STREQUAL "no")
-    
pkg_check_modules (GMENU_PACKAGE libgnome-menu)
+    if (
"${gtkversion}STREQUAL "2")
+        
pkg_check_modules (GMENU_PACKAGE libgnome-menu)
+    else()
+        
pkg_check_modules (GMENU_PACKAGE libgnome-menu-3.0)
+    endif()
     if (
"${GMENU_PACKAGE_FOUND}STREQUAL "")
         
message (STATUS "Could not find libgnome-menu; Cairo-Dock won't be built with GMenu applet.")
         
message (WARNING "This module is required to compile GMenu applet: libgnome-menu")



matttbe, Sunday 08 January 2012 à 18:21


Subscription date : 24 January 2009
Messages : 12573
Il semblerait que le plus gros de GtkGLExt semble avoir été porté vers GTK3: https://mail.gnome.org/archives/gtkglext-list/2012-January/msg00006.html
Mais je suppose que l'on va s'en passer. Cependant, il y a p-ê des parties de code intéressantes (https://github.com/tdz/gtkglext)

fabounet, Wednesday 11 January 2012 à 12:58


Subscription date : 30 November 2007
Messages : 17118
c'est une bonne nouvele, mais je pense aussi qu'on n'y reviendra pas
à moins que la lib évolue en quelque chose de plus, ou bien que l'arrivée de wayland casse tout.

matttbe, Wednesday 11 January 2012 à 13:27


Subscription date : 24 January 2009
Messages : 12573
Mais peut-être qu'il y a des solutions qu'ils utilisent qui soient intéressantes pour le dock (mouais, ok )

Sinon, une idée pour résoudre le bug avec switcher et le fond d'écran vide?

fabounet, Thursday 12 January 2012 à 16:31


Subscription date : 30 November 2007
Messages : 17118
en fait on l'utilisait très peu (car la lib n'apporte justement pas grand chose)
si elle se développe, on verra

Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Portage en GTK+-3.0: problème avec GtkGLExt
matttbe Français 14 fabounet [Read]
12 January 2012 à 16:31


Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Portage en GTK+-3.0: problème avec GtkGLExt 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.