[gtk+] inspector: Record a "start" event whenever we start recording
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] inspector: Record a "start" event whenever we start recording
- Date: Sun, 20 Nov 2016 04:31:29 +0000 (UTC)
commit 32adb3142829fd869b72cc1647fc4b475d61f711
Author: Benjamin Otte <otte redhat com>
Date: Sun Nov 20 01:41:43 2016 +0100
inspector: Record a "start" event whenever we start recording
gtk/inspector/Makefile.inc | 2 +
gtk/inspector/recorder.c | 84 +++++++++++++++++++++++++---------------
gtk/inspector/startrecording.c | 58 +++++++++++++++++++++++++++
gtk/inspector/startrecording.h | 59 ++++++++++++++++++++++++++++
4 files changed, 172 insertions(+), 31 deletions(-)
---
diff --git a/gtk/inspector/Makefile.inc b/gtk/inspector/Makefile.inc
index d98d547..d01e983 100644
--- a/gtk/inspector/Makefile.inc
+++ b/gtk/inspector/Makefile.inc
@@ -28,6 +28,7 @@ inspector_c_sources = \
inspector/selector.c \
inspector/signals-list.c \
inspector/size-groups.c \
+ inspector/startrecording.c \
inspector/statistics.c \
inspector/strv-editor.c \
inspector/treewalk.c \
@@ -63,6 +64,7 @@ inspector_h_sources = \
inspector/selector.h \
inspector/signals-list.h \
inspector/size-groups.h \
+ inspector/startrecording.h \
inspector/statistics.h \
inspector/strv-editor.h \
inspector/treewalk.h \
diff --git a/gtk/inspector/recorder.c b/gtk/inspector/recorder.c
index d3f2aed..0d3a61b 100644
--- a/gtk/inspector/recorder.c
+++ b/gtk/inspector/recorder.c
@@ -31,6 +31,7 @@
#include "recording.h"
#include "rendernodeview.h"
#include "renderrecording.h"
+#include "startrecording.h"
struct _GtkInspectorRecorderPrivate
{
@@ -43,7 +44,7 @@ struct _GtkInspectorRecorderPrivate
GtkWidget *node_property_tree;
GtkTreeModel *render_node_properties;
- guint recording : 1;
+ GtkInspectorRecording *recording; /* start recording if recording or NULL if not */
};
enum {
@@ -82,9 +83,12 @@ recordings_list_row_selected (GtkListBox *box,
GtkInspectorRecording *recording;
if (row)
- {
- recording = g_list_model_get_item (priv->recordings, gtk_list_box_row_get_index (row));
+ recording = g_list_model_get_item (priv->recordings, gtk_list_box_row_get_index (row));
+ else
+ recording = NULL;
+ if (GTK_INSPECTOR_IS_RENDER_RECORDING (recording))
+ {
gtk_render_node_view_set_render_node (GTK_RENDER_NODE_VIEW (priv->render_node_view),
gtk_inspector_render_recording_get_node
(GTK_INSPECTOR_RENDER_RECORDING (recording)));
gtk_render_node_view_set_clip_region (GTK_RENDER_NODE_VIEW (priv->render_node_view),
@@ -232,11 +236,21 @@ gtk_inspector_recorder_recordings_list_create_widget (gpointer item,
GtkWidget *widget;
char *str;
- str = g_strdup_printf ("Frame at %lld", (long long) gtk_inspector_recording_get_timestamp (recording));
- widget = gtk_label_new (str);
- g_free (str);
- gtk_label_set_xalign (GTK_LABEL (widget), 0);
- gtk_widget_show_all (widget);
+ if (GTK_INSPECTOR_IS_RENDER_RECORDING (recording))
+ {
+ str = g_strdup_printf ("Frame at %lld", (long long) gtk_inspector_recording_get_timestamp (recording));
+ widget = gtk_label_new (str);
+ g_free (str);
+ gtk_label_set_xalign (GTK_LABEL (widget), 0);
+ gtk_widget_show_all (widget);
+ }
+ else
+ {
+ widget = gtk_label_new ("Start Recording");
+ gtk_label_set_xalign (GTK_LABEL (widget), 0);
+ gtk_widget_show_all (widget);
+
+ }
return widget;
}
@@ -253,7 +267,7 @@ gtk_inspector_recorder_get_property (GObject *object,
switch (param_id)
{
case PROP_RECORDING:
- g_value_set_boolean (value, priv->recording);
+ g_value_set_boolean (value, priv->recording != NULL);
break;
default:
@@ -338,28 +352,6 @@ gtk_inspector_recorder_init (GtkInspectorRecorder *recorder)
g_object_unref (priv->render_node_properties);
}
-void
-gtk_inspector_recorder_set_recording (GtkInspectorRecorder *recorder,
- gboolean recording)
-{
- GtkInspectorRecorderPrivate *priv = gtk_inspector_recorder_get_instance_private (recorder);
-
- if (priv->recording == recording)
- return;
-
- priv->recording = recording;
-
- g_object_notify_by_pspec (G_OBJECT (recorder), props[PROP_RECORDING]);
-}
-
-gboolean
-gtk_inspector_recorder_is_recording (GtkInspectorRecorder *recorder)
-{
- GtkInspectorRecorderPrivate *priv = gtk_inspector_recorder_get_instance_private (recorder);
-
- return priv->recording;
-}
-
static void
gtk_inspector_recorder_add_recording (GtkInspectorRecorder *recorder,
GtkInspectorRecording *recording)
@@ -386,6 +378,36 @@ gtk_inspector_recorder_add_recording (GtkInspectorRecorder *recorder,
}
void
+gtk_inspector_recorder_set_recording (GtkInspectorRecorder *recorder,
+ gboolean recording)
+{
+ GtkInspectorRecorderPrivate *priv = gtk_inspector_recorder_get_instance_private (recorder);
+
+ if (gtk_inspector_recorder_is_recording (recorder) == recording)
+ return;
+
+ if (recording)
+ {
+ priv->recording = gtk_inspector_start_recording_new ();
+ gtk_inspector_recorder_add_recording (recorder, priv->recording);
+ }
+ else
+ {
+ g_clear_object (&priv->recording);
+ }
+
+ g_object_notify_by_pspec (G_OBJECT (recorder), props[PROP_RECORDING]);
+}
+
+gboolean
+gtk_inspector_recorder_is_recording (GtkInspectorRecorder *recorder)
+{
+ GtkInspectorRecorderPrivate *priv = gtk_inspector_recorder_get_instance_private (recorder);
+
+ return priv->recording != NULL;
+}
+
+void
gtk_inspector_recorder_record_render (GtkInspectorRecorder *recorder,
GtkWidget *widget,
GdkWindow *window,
diff --git a/gtk/inspector/startrecording.c b/gtk/inspector/startrecording.c
new file mode 100644
index 0000000..3496b16
--- /dev/null
+++ b/gtk/inspector/startrecording.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2016 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+
+#include "startrecording.h"
+
+G_DEFINE_TYPE (GtkInspectorStartRecording, gtk_inspector_start_recording, GTK_TYPE_INSPECTOR_RECORDING)
+
+static void
+gtk_inspector_start_recording_finalize (GObject *object)
+{
+ //GtkInspectorStartRecording *recording = GTK_INSPECTOR_START_RECORDING (object);
+
+ G_OBJECT_CLASS (gtk_inspector_start_recording_parent_class)->finalize (object);
+}
+
+static void
+gtk_inspector_start_recording_class_init (GtkInspectorStartRecordingClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = gtk_inspector_start_recording_finalize;
+}
+
+static void
+gtk_inspector_start_recording_init (GtkInspectorStartRecording *vis)
+{
+}
+
+GtkInspectorRecording *
+gtk_inspector_start_recording_new (void)
+{
+ GtkInspectorStartRecording *recording;
+
+ recording = g_object_new (GTK_TYPE_INSPECTOR_START_RECORDING,
+ "timestamp", (gint64) 0,
+ NULL);
+
+ return GTK_INSPECTOR_RECORDING (recording);
+}
+
+// vim: set et sw=2 ts=2:
diff --git a/gtk/inspector/startrecording.h b/gtk/inspector/startrecording.h
new file mode 100644
index 0000000..24cc977
--- /dev/null
+++ b/gtk/inspector/startrecording.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2016 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _GTK_INSPECTOR_START_RECORDING_H_
+#define _GTK_INSPECTOR_START_RECORDING_H_
+
+#include <gdk/gdk.h>
+#include <gsk/gsk.h>
+
+#include "inspector/recording.h"
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_INSPECTOR_START_RECORDING (gtk_inspector_start_recording_get_type())
+#define GTK_INSPECTOR_START_RECORDING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),
GTK_TYPE_INSPECTOR_START_RECORDING, GtkInspectorStartRecording))
+#define GTK_INSPECTOR_START_RECORDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),
GTK_TYPE_INSPECTOR_START_RECORDING, GtkInspectorStartRecordingClass))
+#define GTK_INSPECTOR_IS_START_RECORDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),
GTK_TYPE_INSPECTOR_START_RECORDING))
+#define GTK_INSPECTOR_IS_START_RECORDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),
GTK_TYPE_INSPECTOR_START_RECORDING))
+#define GTK_INSPECTOR_START_RECORDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),
GTK_TYPE_INSPECTOR_START_RECORDING, GtkInspectorStartRecordingClass))
+
+
+typedef struct _GtkInspectorStartRecordingPrivate GtkInspectorStartRecordingPrivate;
+
+typedef struct _GtkInspectorStartRecording
+{
+ GtkInspectorRecording parent;
+
+} GtkInspectorStartRecording;
+
+typedef struct _GtkInspectorStartRecordingClass
+{
+ GtkInspectorRecordingClass parent;
+} GtkInspectorStartRecordingClass;
+
+GType gtk_inspector_start_recording_get_type (void);
+
+GtkInspectorRecording *
+ gtk_inspector_start_recording_new (void);
+
+
+G_END_DECLS
+
+#endif // _GTK_INSPECTOR_START_RECORDING_H_
+
+// vim: set et sw=2 ts=2:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]