[Pkg-mozext-commits] [firetray] 13/399: new version of LibGtkStatusIcon.js with XPCOMUtils.defineLazyGetter()
David Prévot
taffit at alioth.debian.org
Tue Oct 29 18:23:05 UTC 2013
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch dfsg-clean
in repository firetray.
commit d85edced00fd09b71500cd33978b3cc28fe4ac6a
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Mon Jul 11 18:59:12 2011 +0200
new version of LibGtkStatusIcon.js with XPCOMUtils.defineLazyGetter()
---
src/chrome/content/overlay.js | 7 +--
src/modules/LibGtkStatusIcon.js | 116 +++++++++++++++++++++------------------
2 files changed, 66 insertions(+), 57 deletions(-)
diff --git a/src/chrome/content/overlay.js b/src/chrome/content/overlay.js
index a58b7a1..c2baeba 100644
--- a/src/chrome/content/overlay.js
+++ b/src/chrome/content/overlay.js
@@ -23,15 +23,14 @@ mozt.Main = {
return false;
}
- LibGtkStatusIcon.init();
this.tray_icon = LibGtkStatusIcon.gtk_status_icon_new();
var mozApp = mozt.Utils.appInfoService.name;
var icon_filename = MOZT_ICON_DIR + mozApp.toLowerCase() + MOZT_ICON_SUFFIX;
LibGtkStatusIcon.gtk_status_icon_set_from_file(this.tray_icon,
icon_filename);
- // TODO: produces:
- // (firefox-bin:5302): Gdk-CRITICAL **: IA__gdk_window_get_root_coords: assertion `GDK_IS_WINDOW (window)' failed
- // (thunderbird-bin:5380): Gdk-CRITICAL **: IA__gdk_window_get_root_coords: assertion `GDK_IS_WINDOW (window)' failed
+ // FIXME: hover on icno produces:
+ // (firefox-bin:5302): Gdk-CRITICAL **: IA__gdk_window_get_root_coords:
+ // assertion `GDK_IS_WINDOW (window)' failed
LibGtkStatusIcon.gtk_status_icon_set_tooltip_text(this.tray_icon,
mozApp);
diff --git a/src/modules/LibGtkStatusIcon.js b/src/modules/LibGtkStatusIcon.js
index 6e0c74d..d64a1e8 100644
--- a/src/modules/LibGtkStatusIcon.js
+++ b/src/modules/LibGtkStatusIcon.js
@@ -2,81 +2,91 @@
var EXPORTED_SYMBOLS = ["LibGtkStatusIcon"];
+const LIB_GTK = "libgtk-x11-2.0.so";
+
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
-const LIB_GTK = "libgtk-x11-2.0.so";
-
-var LibGtkStatusIcon = {
-
- _lib: null,
+Cu.import("resource://gre/modules/ctypes.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
- init: function() {
- // If ctypes doesn't exist, try to get it
- Cu.import("resource://gre/modules/ctypes.jsm");
- // If we still don't have ctypes, this isn't going to work...
- if (typeof(ctypes) == "undefined") {
- throw ("Could not load JS-Ctypes");
- }
+XPCOMUtils.defineLazyGetter(this, "libgtk", function() {
+ var libgtk = ctypes.open(LIB_GTK);
+ if (!libgtk)
+ throw "libgtk is unavailable";
- try {
- // Try to start up dependencies - if they fail, they'll throw
- // exceptions. ex: GObjectLib.init();
-
- this._lib = ctypes.open(LIB_GTK);
- if (!this._lib)
- throw ("Could not load " + LIB_GTK);
-
- } catch (e) {
- this.shutdown();
- throw(e);
- }
-
- // Ok, we got everything - let's declare.
- this._declare();
- },
-
- shutdown: function() {
- // Close our connection to the library.
- if (this._lib)
- this._lib.close();
- },
+ return libgtk;
+});
- _declare: function() {
- // Types
- this.GtkStatusIcon = ctypes.StructType("GtkStatusIcon");
- this.GtkStatusIconRef = ctypes.PointerType(this.GtkStatusIcon);
- this.GdkPixbuf = ctypes.StructType("GdkPixbuf");
- this.GdkPixbufRef = ctypes.PointerType(this.GdkPixbuf);
+// Types
+XPCOMUtils.defineLazyGetter(this, "GtkStatusIcon", function() {
+ return ctypes.StructType("GtkStatusIcon");
+});
- // Consts
- // this.INDICATOR_MESSAGES_SERVER_TYPE = "message";
+// Functions
+XPCOMUtils.defineLazyGetter(this, "gtk_status_icon_new", function() {
+ var gtk_status_icon_new = libgtk.declare(
+ "gtk_status_icon_new",
+ ctypes.default_abi,
+ this.GtkStatusIcon.ptr
+ );
- // Functions
+ if (!gtk_status_icon_new)
+ throw "gtk_status_icon_new is unavailable";
- this.gtk_status_icon_new = this._lib.declare(
- "gtk_status_icon_new",
- ctypes.default_abi,
- this.GtkStatusIconRef
- );
+ return gtk_status_icon_new;
+});
- this.gtk_status_icon_set_from_file = this._lib.declare(
+XPCOMUtils.defineLazyGetter(this, "gtk_status_icon_set_from_file", function() {
+ var gtk_status_icon_set_from_file = libgtk.declare(
"gtk_status_icon_set_from_file",
ctypes.default_abi,
ctypes.void_t,
- this.GtkStatusIconRef,
+ this.GtkStatusIcon.ptr,
ctypes.char.ptr
);
- this.gtk_status_icon_set_tooltip_text = this._lib.declare(
+ if (!gtk_status_icon_new)
+ throw "gtk_status_icon_set_from_file is unavailable";
+
+ return gtk_status_icon_set_from_file;
+});
+
+XPCOMUtils.defineLazyGetter(this, "gtk_status_icon_set_tooltip_text", function() {
+ var gtk_status_icon_set_tooltip_text = libgtk.declare(
"gtk_status_icon_set_tooltip_text",
ctypes.default_abi,
ctypes.void_t,
- this.GtkStatusIconRef,
+ this.GtkStatusIcon.ptr,
ctypes.char.ptr
);
- }
+ if (!gtk_status_icon_set_tooltip_text)
+ throw "gtk_status_icon_set_tooltip_text is unavailable";
+
+ return gtk_status_icon_set_tooltip_text;
+});
+
+var LibGtkStatusIcon = {
+ /*
+ * FIXME: for now, we manually close the lib, but m_conley said: well, the
+ * first idea that comes to mind is to add an "unload" or "shutdown" function
+ * to the main MessagingMenu object that listens for an xpcom shutdown event,
+ * and then unloads the library
+ */
+ shutdown: function() {
+ if (libgtk) libgtk.close();
+ },
+
+ // Types
+ GtkStatusIcon: GtkStatusIcon,
+
+ // Constants
+ // INDICATOR_MESSAGES_SERVER_TYPE: "message",
+ // Functions
+ gtk_status_icon_new: gtk_status_icon_new,
+ gtk_status_icon_set_from_file: gtk_status_icon_set_from_file,
+ gtk_status_icon_set_tooltip_text: gtk_status_icon_set_tooltip_text,
};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git
More information about the Pkg-mozext-commits
mailing list