forked from AuroraMiddleware/gtk
inspector: Record a "start" event whenever we start recording
This commit is contained in:
parent
b404ecf294
commit
32adb31428
@ -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 \
|
||||
|
@ -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)
|
||||
@ -385,6 +377,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,
|
||||
|
58
gtk/inspector/startrecording.c
Normal file
58
gtk/inspector/startrecording.c
Normal file
@ -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:
|
59
gtk/inspector/startrecording.h
Normal file
59
gtk/inspector/startrecording.h
Normal file
@ -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:
|
Loading…
Reference in New Issue
Block a user