From 908476f0bf7e4e4ad17cab798398c5db0bb4b825 Mon Sep 17 00:00:00 2001 From: Tuomo Tanskanen Date: Wed, 16 Dec 2009 13:37:22 +0200 Subject: [PATCH] fix src --- src/Makefile.am | 31 +--- src/item.c | 406 --------------------------------------------- src/item.h | 34 ---- src/la_status_area_item.c | 2 +- 4 files changed, 8 insertions(+), 465 deletions(-) delete mode 100644 src/item.c delete mode 100644 src/item.h diff --git a/src/Makefile.am b/src/Makefile.am index b79153d..d75e36f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,32 +1,15 @@ hildondesktoplib_LTLIBRARIES= \ - status_menu_load_applet.la \ - status_area_load_applet.la + status_area_cpumem_applet.la +status_area_cpumem_applet_la_CPPFLAGS = \ + $(CPUMEM_APPLET_CFLAGS) -status_menu_load_applet_la_CPPFLAGS = \ - $(MAEMO5_LOADAPPLET_CFLAGS) - -status_menu_load_applet_la_LDFLAGS = \ - -module -avoid-version - -status_menu_load_applet_la_LIBADD = \ - $(MAEMO5_LOADAPPLET_LIBS) - -status_menu_load_applet_la_SOURCES = \ - item.c \ - item.h - - - -status_area_load_applet_la_CPPFLAGS = \ - $(MAEMO5_LOADAPPLET_CFLAGS) - -status_area_load_applet_la_LDFLAGS = \ +status_area_cpumem_applet_la_LDFLAGS = \ -module -avoid-version -status_area_load_applet_la_LIBADD = \ - $(MAEMO5_LOADAPPLET_LIBS) +status_area_cpumem_applet_la_LIBADD = \ + $(CPUMEM_APPLET_LIBS) -status_area_load_applet_la_SOURCES = \ +status_area_cpumem_applet_la_SOURCES = \ la_status_area_item.c \ la_status_area_item.h diff --git a/src/item.c b/src/item.c deleted file mode 100644 index 6eb507a..0000000 --- a/src/item.c +++ /dev/null @@ -1,406 +0,0 @@ -/* - Load applet - Maemo5 edition - -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "item.h" - -#define LOAD_APPLET_STATUS_MENU_ITEM_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE (obj, LOAD_APPLET_TYPE_STATUS_MENU_ITEM, LoadAppletStatusMenuItemPrivate)) - -struct _LoadAppletStatusMenuItemPrivate { - gulong screenshot_h; - gulong video_h; - pid_t rec_pid; - gboolean recording; - - DBusError error; - GMainLoop *loop; - DBusConnection *conn; - guint timeout; - -}; - -HD_DEFINE_PLUGIN_MODULE (LoadAppletStatusMenuItem, load_applet_status_menu_item, HD_TYPE_STATUS_MENU_ITEM) - - - -#define SHUTTER_SOUND "/usr/share/sounds/camera_snd_title_1.wav" -#define BEEP_SOUND "/usr/share/sounds/ui-default_beep.wav" -#define MAX_SSHOT_NAME_LEN 64 -static gchar *sshotfilename = NULL; -static char sshotname[MAX_SSHOT_NAME_LEN]; -static guint screenshot_delay = 20; -static guint beeps = 0; -static gint sshotn = 0; -static gint scastn = 0; -static gboolean taking = FALSE; - -#define MATCH_CAMERA_KEY "type='signal'," \ - "interface='org.freedesktop.Hal.Device'," - - -static void -load_applet_status_menu_item_class_finalize(LoadAppletStatusMenuItemClass * klass) -{ -} - -static void -load_applet_status_menu_item_dispose(GObject * object) -{ - G_OBJECT_CLASS(load_applet_status_menu_item_parent_class)->dispose(object); -} - -static void -load_applet_status_menu_item_class_init(LoadAppletStatusMenuItemClass * klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS(klass); - - object_class->dispose = load_applet_status_menu_item_dispose; - - g_type_class_add_private(klass, sizeof(LoadAppletStatusMenuItemPrivate)); -} - -/* - * Get the filename for next screen-shot. Start with nr. - * - */ -static int -get_next_sshot(gint nr, const gchar *suffix) -{ - FILE *f; - gint n; - - n = nr; - f = NULL; - do { - g_snprintf (sshotname, MAX_SSHOT_NAME_LEN-1, "%s/MyDocs/.images/%s%02d.%s", getenv("HOME"), sshotfilename, n, suffix); - f = g_fopen(sshotname, "r"); - if (f) { - fclose(f); - n++; - } - } - while(f != NULL); - - return n; -} - - -/* - * Get the filename for next screen-cast. Start with nr. - * - */ -static int -get_next_scast(gint nr, const gchar *suffix) -{ - FILE *f; - gint n; - - n = nr; - f = NULL; - do { - g_snprintf (sshotname, MAX_SSHOT_NAME_LEN-1, "%s/MyDocs/.videos/%s%02d.%s", getenv("HOME"), "screencast", n, suffix); - f = g_fopen(sshotname, "r"); - if (f) { - fclose(f); - n++; - } - } - while(f != NULL); - - return n; -} - - - -/* - * Close the menu, make sure it is closed and redrawn - */ -static void -do_little_dance (void) -{ - while (gtk_events_pending()) - { - gtk_main_iteration(); - } - - usleep(1000); - sched_yield(); -} - - -/* - * Take screeshot using the root window drawable - */ -static gboolean -take_screenshot(void) -{ - int width, height; - GdkDrawable *root_window; - GdkPixbuf *pixbuf; - gboolean ret; - GError *error = NULL; - - do_little_dance(); - sshotn = get_next_sshot(sshotn, "png"); - - - root_window = gdk_get_default_root_window(); - gdk_drawable_get_size(root_window, &width, &height); - pixbuf = gdk_pixbuf_get_from_drawable(NULL, - root_window, - gdk_drawable_get_colormap (root_window), - 0, 0, - 0, 0, - width, height); - - - ret = gdk_pixbuf_save(pixbuf, sshotname, "png", &error, NULL); - g_object_unref(pixbuf); - - //DEBUG - //printf("\tSaving %s\n", sshotname); - - return FALSE; -} - - -/* - * Either beep or play shutter sound and make the screenshot - */ -static gboolean -beep_or_shoot(gpointer data) -{ - beeps++; - if (beeps >= screenshot_delay) { - hildon_play_system_sound(SHUTTER_SOUND); - take_screenshot(); - return FALSE; - } else { - hildon_play_system_sound(BEEP_SOUND); - return TRUE; - } -} - - -static DBusHandlerResult -handle_dbus_events(DBusConnection *connection, DBusMessage *msg, void *user_data) -{ - if (taking == FALSE) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - gint message_type = -1; - const gchar *interface = dbus_message_get_interface(msg); - const gchar *method = dbus_message_get_member(msg); - LoadAppletStatusMenuItem *item = (LoadAppletStatusMenuItem*)user_data; - item->priv = LOAD_APPLET_STATUS_MENU_ITEM_GET_PRIVATE (item); - - if (!(message_type = dbus_message_get_type(msg)) || !interface || !method) - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - switch (message_type) { - case DBUS_MESSAGE_TYPE_SIGNAL: - if ((g_strcmp0(interface, "org.freedesktop.Hal.Device") == 0) && - (g_strcmp0(method, "PropertyModified") == 0)) { - //Camera key pressed. Take screenshot, cancel the waiting loop, remove D-Bus listener - gtk_timeout_remove(item->priv->timeout); - taking = FALSE; - hildon_play_system_sound(SHUTTER_SOUND); - take_screenshot(); - dbus_bus_remove_match(item->priv->conn, MATCH_CAMERA_KEY, &item->priv->error); - dbus_connection_unref(item->priv->conn); - item->priv->conn = 0; - g_main_loop_unref(item->priv->loop); - item->priv->loop = NULL; - } - break; - default: - break; - } - return DBUS_HANDLER_RESULT_HANDLED; -} - - -#ifdef SHOW_PROCESS_INFO -/* - * Show the details dialog (FAKE) - * - */ -static void -activate_status_item(GtkMenuItem *item, gpointer data) -{ - GtkWidget *dialog; - GtkWidget *selector; - GtkWidget *content_area; - gint i; - - dialog = gtk_dialog_new(); - - selector = hildon_touch_selector_new_text (); - hildon_touch_selector_set_column_selection_mode (HILDON_TOUCH_SELECTOR (selector),HILDON_TOUCH_SELECTOR_SELECTION_MODE_SINGLE); - - for (i = 1; i <= 10 ; i++) { - gchar *label = g_strdup_printf ("Item %d", i); - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), label); - g_free (label); - } - - hildon_touch_selector_unselect_all(HILDON_TOUCH_SELECTOR (selector), 0); - - content_area = GTK_DIALOG(dialog)->vbox; - gtk_container_add(GTK_CONTAINER(content_area), selector); - gtk_window_set_default_size(GTK_WINDOW(dialog), -1, 480); - - gtk_window_set_title(GTK_WINDOW(dialog), "Select process to kill - FAKE FEATURE"); - gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); - gtk_dialog_add_button(GTK_DIALOG(dialog), "Kill it", 1); - - gtk_widget_show_all(GTK_WIDGET(dialog)); - //gtk_dialog_run(GTK_DIALOG(dialog)); <- blocks and won't close status menu -} -#endif - - - -/* - * Answer the callback by setting delayed screenshot - */ -static void -activate_delayed_screenshot_item(GtkMenuItem *item, gpointer data) -{ - if (taking) - return; - - LoadAppletStatusMenuItem *menu_item = (LoadAppletStatusMenuItem*)data; - menu_item->priv = LOAD_APPLET_STATUS_MENU_ITEM_GET_PRIVATE (menu_item); - - hildon_banner_show_information(NULL, NULL, "You have 20s to press the camera capture key to take screenshot."); - beeps = 0; - taking = TRUE; - menu_item->priv->timeout = gtk_timeout_add(1000, beep_or_shoot, NULL); - - menu_item->priv->loop = g_main_loop_new(NULL, FALSE); - dbus_error_init(&menu_item->priv->error); - if ((menu_item->priv->conn = dbus_bus_get(DBUS_BUS_SYSTEM, &menu_item->priv->error)) == NULL) { - DLOG_CRIT("LA:Failed to open connection to system bus"); - dbus_error_free(&menu_item->priv->error); - return; - } - if (!dbus_connection_add_filter(menu_item->priv->conn, handle_dbus_events, (void *)data, 0)) { - ULOG_CRIT("LA:Failed to add dbus filter"); - dbus_error_free(&menu_item->priv->error); - return; - } - dbus_bus_add_match(menu_item->priv->conn, MATCH_CAMERA_KEY, &menu_item->priv->error); - if (dbus_error_is_set(&menu_item->priv->error)) { - ULOG_WARN("LA:Unable to add match for my key"); - dbus_error_free(&menu_item->priv->error); - } - dbus_connection_setup_with_g_main(menu_item->priv->conn, NULL); -} - - -/* - * Answer the callback on video button - * If idle, start recording - * If already recording, stop - */ -static void -activate_video_item(GtkMenuItem *item, gpointer data) -{ - LoadAppletStatusMenuItem *la_item = (LoadAppletStatusMenuItem*)data; - pid_t rec_pid; - gchar *savefile; - - if (la_item->priv->recording == FALSE) { - // We are not recording. Start recording by exec - scastn = get_next_scast(scastn, "avi"); - savefile = g_strdup_printf("location=%s", sshotname); - rec_pid = fork(); - if (rec_pid == 0) { - execl("/usr/bin/gst-launch", "/usr/bin/gst-launch", "ximagewsrc", "!", "video/x-raw-rgb,framerate=5/1", "!", "ffmpegcolorspace", "!", "jpegenc", "quality=30", "!", "queue", "!", "mux.", "autoaudiosrc", "!", "audioconvert", "!", "audioresample", "!", "queue", "!", "mux.", "avimux", "name=mux", "!", "filesink", savefile, NULL); - exit(0); - } else { - la_item->priv->recording = TRUE; - la_item->priv->rec_pid = rec_pid; - } - } else { - // We are already recording - kill(la_item->priv->rec_pid, SIGTERM); - la_item->priv->recording = FALSE; - } -} - - - - -static void -load_applet_status_menu_item_init (LoadAppletStatusMenuItem * menu_item) -{ - #define ICON_DIR "/usr/share/pixmaps/" - #define ICON_VIDEO ICON_DIR"la_video.png" - #define ICON_PICTURE ICON_DIR"la_picture.png" - #define ICON_PROCESS ICON_DIR"la_process.png" - - GtkWidget *hbox, *icon, *b; - - menu_item->priv = LOAD_APPLET_STATUS_MENU_ITEM_GET_PRIVATE (menu_item); - - hbox = gtk_hbox_new(FALSE, 0); - - sshotfilename = g_strdup("screenshot"); - -#ifdef SHOW_PROCESS_INFO - // Button status - b = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL); - hildon_button_set_style(HILDON_BUTTON(b), HILDON_BUTTON_STYLE_PICKER); - gtk_widget_show(b); - icon = gtk_image_new_from_file(ICON_PROCESS); - gtk_widget_show(icon); - gtk_button_set_image(GTK_BUTTON(b), GTK_WIDGET(icon)); - gtk_box_pack_start(GTK_BOX(hbox), b, TRUE, TRUE, 1); - g_signal_connect(b, "clicked", G_CALLBACK(activate_status_item), menu_item); -#endif - // Button Video - b = gtk_toggle_button_new(); - gtk_widget_show(b); - icon = gtk_image_new_from_file(ICON_VIDEO); - gtk_widget_show(icon); - gtk_button_set_image(GTK_BUTTON(b), GTK_WIDGET(icon)); - gtk_box_pack_start(GTK_BOX(hbox), b, TRUE, TRUE, 1); - menu_item->priv->screenshot_h = g_signal_connect(b, "clicked", G_CALLBACK(activate_video_item), menu_item); - // Button Picture - b = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL); - gtk_widget_show(b); - icon = gtk_image_new_from_file(ICON_PICTURE); - gtk_widget_show(icon); - gtk_button_set_image(GTK_BUTTON(b), GTK_WIDGET(icon)); - gtk_box_pack_start(GTK_BOX(hbox), b, TRUE, TRUE, 1); - menu_item->priv->screenshot_h = g_signal_connect(b, "clicked", G_CALLBACK(activate_delayed_screenshot_item), menu_item); - - // Pack widgets to menu - gtk_widget_show(hbox); - gtk_container_add(GTK_CONTAINER(menu_item), hbox); - gtk_widget_show(GTK_WIDGET(menu_item)); - - // More init - menu_item->priv->recording = FALSE; -} - - - diff --git a/src/item.h b/src/item.h deleted file mode 100644 index 2defba7..0000000 --- a/src/item.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef __LOAD_APPLET_STATUS_MENU_ITEM_H__ -#define __LOAD_APPLET_STATUS_MENU_ITEM_H__ - -#include - -G_BEGIN_DECLS -#define LOAD_APPLET_TYPE_STATUS_MENU_ITEM (load_applet_status_menu_item_get_type ()) -#define LOAD_APPLET_STATUS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOAD_APPLET_TYPE_STATUS_MENU_ITEM, LoadAppletStatusMenuItem)) -#define LOAD_APPLET_STATUS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LOAD_APPLET_TYPE_STATUS_MENU_ITEM, LoadAppletStatusMenuItemClass)) -#define LOAD_APPLET_IS_STATUS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LOAD_APPLET_TYPE_STATUS_MENU_ITEM)) -#define LOAD_APPLET_IS_STATUS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LOAD_APPLET_TYPE_STATUS_MENU_ITEM)) -#define LOAD_APPLET_STATUS_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), LOAD_APPLET_TYPE_STATUS_MENU_ITEM, LoadAppletStatusMenuItemClass)) -typedef struct _LoadAppletStatusMenuItem LoadAppletStatusMenuItem; - -typedef struct _LoadAppletStatusMenuItemClass - LoadAppletStatusMenuItemClass; - -typedef struct _LoadAppletStatusMenuItemPrivate - LoadAppletStatusMenuItemPrivate; - -struct _LoadAppletStatusMenuItem { - HDStatusMenuItem parent; - - LoadAppletStatusMenuItemPrivate *priv; -}; - -struct _LoadAppletStatusMenuItemClass { - HDStatusMenuItemClass parent; -}; - -GType load_applet_status_menu_item_get_type (void); - -G_END_DECLS -#endif diff --git a/src/la_status_area_item.c b/src/la_status_area_item.c index e1e1ff3..3925fd4 100644 --- a/src/la_status_area_item.c +++ b/src/la_status_area_item.c @@ -341,7 +341,7 @@ load_applet_status_area_item_init (LoadAppletStatusAreaItem *item) gdk_pixbuf_fill(item->priv->pixbuf_off, 0x777777ff); load_applet_status_area_item_set_area_icon(item); - item->priv->osso = osso_initialize ("load_applet_status_area_item", "Maemo5", TRUE, NULL); + item->priv->osso = osso_initialize ("cpumem_applet_status_area_item", "Maemo5", TRUE, NULL); item->priv->timeout_id = gtk_timeout_add(1000, la_check_load, item); osso_hw_set_display_event_cb (item->priv->osso, load_applet_status_area_item_display_cb, item); } -- 1.7.9.5