build: rename all symbols to use sysprof_ as prefix

As we gain in usage, we need to be more careful about using a prefix
that will not collide with other symbols. So version 3 of our ABI will
change to using Sysprof/SYSPROF/sysprof as the various prefixes.

The soname/api version bump will happen later on this branch so that
things are easier to test up until then.
This commit is contained in:
Christian Hergert
2019-05-08 12:03:46 -07:00
parent 4821883bfa
commit 53c718b708
143 changed files with 5792 additions and 5789 deletions

View File

@ -1,25 +1,25 @@
libsysprof_capture_headers = files([ libsysprof_capture_headers = files([
'sp-address.h', 'sysprof-address.h',
'sp-clock.h', 'sysprof-clock.h',
'sp-capture-condition.h', 'sysprof-capture-condition.h',
'sp-capture-cursor.h', 'sysprof-capture-cursor.h',
'sp-capture-reader.h', 'sysprof-capture-reader.h',
'sp-capture-types.h', 'sysprof-capture-types.h',
'sp-capture-writer.h', 'sysprof-capture-writer.h',
'sp-platform.h', 'sysprof-platform.h',
'sysprof-capture.h', 'sysprof-capture.h',
'sysprof-version-macros.h', 'sysprof-version-macros.h',
]) ])
libsysprof_capture_sources = files([ libsysprof_capture_sources = files([
'sp-address.c', 'sysprof-address.c',
'sp-capture-condition.c', 'sysprof-capture-condition.c',
'sp-capture-cursor.c', 'sysprof-capture-cursor.c',
'sp-capture-reader.c', 'sysprof-capture-reader.c',
'sp-capture-util.c', 'sysprof-capture-util.c',
'sp-capture-writer.c', 'sysprof-capture-writer.c',
'sp-clock.c', 'sysprof-clock.c',
'sp-platform.c', 'sysprof-platform.c',
]) ])
configure_file( configure_file(

View File

@ -1,265 +0,0 @@
/* sp-capture-cursor.c
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This file 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 file 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 General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#define G_LOG_DOMAIN "sp-capture-cursor"
#include "config.h"
#include "sp-capture-condition.h"
#include "sp-capture-cursor.h"
#include "sp-capture-reader.h"
#define READ_DELEGATE(f) ((ReadDelegate)(f))
typedef const SpCaptureFrame *(*ReadDelegate) (SpCaptureReader *);
struct _SpCaptureCursor
{
volatile gint ref_count;
GPtrArray *conditions;
SpCaptureReader *reader;
guint reversed : 1;
};
static void
sp_capture_cursor_finalize (SpCaptureCursor *self)
{
g_clear_pointer (&self->conditions, g_ptr_array_unref);
g_clear_pointer (&self->reader, sp_capture_reader_unref);
g_slice_free (SpCaptureCursor, self);
}
static SpCaptureCursor *
sp_capture_cursor_init (void)
{
SpCaptureCursor *self;
self = g_slice_new0 (SpCaptureCursor);
self->conditions = g_ptr_array_new_with_free_func ((GDestroyNotify) sp_capture_condition_unref);
self->ref_count = 1;
return g_steal_pointer (&self);
}
/**
* sp_capture_cursor_ref:
* @self: a #SpCaptureCursor
*
* Returns: (transfer full): @self
*
* Since: 3.34
*/
SpCaptureCursor *
sp_capture_cursor_ref (SpCaptureCursor *self)
{
g_return_val_if_fail (self != NULL, NULL);
g_return_val_if_fail (self->ref_count > 0, NULL);
g_atomic_int_inc (&self->ref_count);
return self;
}
/**
* sp_capture_cursor_unref:
* @self: a #SpCaptureCursor
*
* Since: 3.34
*/
void
sp_capture_cursor_unref (SpCaptureCursor *self)
{
g_return_if_fail (self != NULL);
g_return_if_fail (self->ref_count > 0);
if (g_atomic_int_dec_and_test (&self->ref_count))
sp_capture_cursor_finalize (self);
}
/**
* sp_capture_cursor_foreach:
* @self: a #SpCaptureCursor
* @callback: (scope call): a closure to execute
* @user_data: user data for @callback
*
*/
void
sp_capture_cursor_foreach (SpCaptureCursor *self,
SpCaptureCursorCallback callback,
gpointer user_data)
{
g_return_if_fail (self != NULL);
g_return_if_fail (self->reader != NULL);
g_return_if_fail (callback != NULL);
for (;;)
{
const SpCaptureFrame *frame;
SpCaptureFrameType type = 0;
ReadDelegate delegate = NULL;
if (!sp_capture_reader_peek_type (self->reader, &type))
return;
switch (type)
{
case SP_CAPTURE_FRAME_TIMESTAMP:
delegate = READ_DELEGATE (sp_capture_reader_read_timestamp);
break;
case SP_CAPTURE_FRAME_SAMPLE:
delegate = READ_DELEGATE (sp_capture_reader_read_sample);
break;
case SP_CAPTURE_FRAME_MAP:
delegate = READ_DELEGATE (sp_capture_reader_read_map);
break;
case SP_CAPTURE_FRAME_MARK:
delegate = READ_DELEGATE (sp_capture_reader_read_mark);
break;
case SP_CAPTURE_FRAME_PROCESS:
delegate = READ_DELEGATE (sp_capture_reader_read_process);
break;
case SP_CAPTURE_FRAME_FORK:
delegate = READ_DELEGATE (sp_capture_reader_read_fork);
break;
case SP_CAPTURE_FRAME_EXIT:
delegate = READ_DELEGATE (sp_capture_reader_read_exit);
break;
case SP_CAPTURE_FRAME_JITMAP:
delegate = READ_DELEGATE (sp_capture_reader_read_jitmap);
break;
case SP_CAPTURE_FRAME_CTRDEF:
delegate = READ_DELEGATE (sp_capture_reader_read_counter_define);
break;
case SP_CAPTURE_FRAME_CTRSET:
delegate = READ_DELEGATE (sp_capture_reader_read_counter_set);
break;
default:
if (!sp_capture_reader_skip (self->reader))
return;
delegate = NULL;
break;
}
if (delegate == NULL)
continue;
if (NULL == (frame = delegate (self->reader)))
return;
if (self->conditions->len == 0)
{
if (!callback (frame, user_data))
return;
}
else
{
for (guint i = 0; i < self->conditions->len; i++)
{
const SpCaptureCondition *condition = g_ptr_array_index (self->conditions, i);
if (sp_capture_condition_match (condition, frame))
{
if (!callback (frame, user_data))
return;
break;
}
}
}
}
}
void
sp_capture_cursor_reset (SpCaptureCursor *self)
{
g_return_if_fail (self != NULL);
g_return_if_fail (self->reader != NULL);
sp_capture_reader_reset (self->reader);
}
void
sp_capture_cursor_reverse (SpCaptureCursor *self)
{
g_return_if_fail (self != NULL);
self->reversed = !self->reversed;
}
/**
* sp_capture_cursor_add_condition:
* @self: An #SpCaptureCursor
* @condition: (transfer full): An #SpCaptureCondition
*
* Adds the condition to the cursor. This condition must evaluate to
* true or a given #SpCapureFrame will not be matched.
*/
void
sp_capture_cursor_add_condition (SpCaptureCursor *self,
SpCaptureCondition *condition)
{
g_return_if_fail (self != NULL);
g_return_if_fail (condition != NULL);
g_ptr_array_add (self->conditions, condition);
}
/**
* sp_capture_cursor_new:
* @self: a #SpCaptureCursor
*
* Returns: (transfer full): a new cursor for @reader
*/
SpCaptureCursor *
sp_capture_cursor_new (SpCaptureReader *reader)
{
SpCaptureCursor *self;
g_return_val_if_fail (reader != NULL, NULL);
self = sp_capture_cursor_init ();
self->reader = sp_capture_reader_copy (reader);
sp_capture_reader_reset (self->reader);
return self;
}
/**
* sp_capture_cursor_get_reader:
*
* Gets the underlying reader that is used by the cursor.
*
* Returns: (transfer none): An #SpCaptureReader
*/
SpCaptureReader *
sp_capture_cursor_get_reader (SpCaptureCursor *self)
{
g_return_val_if_fail (self != NULL, NULL);
return self->reader;
}

View File

@ -1,91 +0,0 @@
/* sp-capture-reader.h
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This file 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 file 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 General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include "sp-capture-types.h"
#include "sysprof-version-macros.h"
G_BEGIN_DECLS
typedef struct _SpCaptureReader SpCaptureReader;
SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_capture_reader_new (const gchar *filename,
GError **error);
SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_capture_reader_new_from_fd (int fd,
GError **error);
SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_capture_reader_copy (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_capture_reader_ref (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_capture_reader_unref (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const gchar *sp_capture_reader_get_filename (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const gchar *sp_capture_reader_get_time (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gint64 sp_capture_reader_get_start_time (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gint64 sp_capture_reader_get_end_time (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_reader_skip (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_reader_peek_type (SpCaptureReader *self,
SpCaptureFrameType *type);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_reader_peek_frame (SpCaptureReader *self,
SpCaptureFrame *frame);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureMap *sp_capture_reader_read_map (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureMark *sp_capture_reader_read_mark (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureExit *sp_capture_reader_read_exit (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureFork *sp_capture_reader_read_fork (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureTimestamp *sp_capture_reader_read_timestamp (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureProcess *sp_capture_reader_read_process (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureSample *sp_capture_reader_read_sample (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
GHashTable *sp_capture_reader_read_jitmap (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureFrameCounterDefine *sp_capture_reader_read_counter_define (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SpCaptureFrameCounterSet *sp_capture_reader_read_counter_set (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_reader_reset (SpCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_reader_splice (SpCaptureReader *self,
SpCaptureWriter *dest,
GError **error);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_reader_save_as (SpCaptureReader *self,
const gchar *filename,
GError **error);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpCaptureReader, sp_capture_reader_unref)
G_END_DECLS

View File

@ -1,256 +0,0 @@
/* sp-capture-types.h
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This file 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 file 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 General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include <glib.h>
#include "sp-clock.h"
G_BEGIN_DECLS
#define SP_CAPTURE_MAGIC (GUINT32_TO_LE(0xFDCA975E))
#define SP_CAPTURE_ALIGN (sizeof(SpCaptureAddress))
#if defined(_MSC_VER)
# define SP_ALIGNED_BEGIN(_N) __declspec(align (_N))
# define SP_ALIGNED_END(_N)
#else
# define SP_ALIGNED_BEGIN(_N)
# define SP_ALIGNED_END(_N) __attribute__((aligned ((_N))))
#endif
#if GLIB_SIZEOF_VOID_P == 8
# define SP_CAPTURE_JITMAP_MARK G_GUINT64_CONSTANT(0xE000000000000000)
# define SP_CAPTURE_ADDRESS_FORMAT "0x%016lx"
#elif GLIB_SIZEOF_VOID_P == 4
# define SP_CAPTURE_JITMAP_MARK G_GUINT64_CONSTANT(0xE0000000)
# define SP_CAPTURE_ADDRESS_FORMAT "0x%016llx"
#else
#error Unknown GLIB_SIZEOF_VOID_P
#endif
#define SP_CAPTURE_CURRENT_TIME (sp_clock_get_current_time())
#define SP_CAPTURE_COUNTER_INT64 0
#define SP_CAPTURE_COUNTER_DOUBLE 1
typedef struct _SpCaptureReader SpCaptureReader;
typedef struct _SpCaptureWriter SpCaptureWriter;
typedef struct _SpCaptureCursor SpCaptureCursor;
typedef struct _SpCaptureCondition SpCaptureCondition;
typedef guint64 SpCaptureAddress;
typedef union
{
gint64 v64;
gdouble vdbl;
} SpCaptureCounterValue;
typedef enum
{
SP_CAPTURE_FRAME_TIMESTAMP = 1,
SP_CAPTURE_FRAME_SAMPLE = 2,
SP_CAPTURE_FRAME_MAP = 3,
SP_CAPTURE_FRAME_PROCESS = 4,
SP_CAPTURE_FRAME_FORK = 5,
SP_CAPTURE_FRAME_EXIT = 6,
SP_CAPTURE_FRAME_JITMAP = 7,
SP_CAPTURE_FRAME_CTRDEF = 8,
SP_CAPTURE_FRAME_CTRSET = 9,
SP_CAPTURE_FRAME_MARK = 10,
} SpCaptureFrameType;
SP_ALIGNED_BEGIN(1)
typedef struct
{
guint32 magic;
guint32 version : 8;
guint32 little_endian : 1;
guint32 padding : 23;
gchar capture_time[64];
gint64 time;
gint64 end_time;
gchar suffix[168];
} SpCaptureFileHeader
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
guint16 len;
gint16 cpu;
gint32 pid;
gint64 time;
guint32 type : 8;
guint32 padding1 : 24;
guint32 padding2;
guint8 data[0];
} SpCaptureFrame
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
guint64 start;
guint64 end;
guint64 offset;
guint64 inode;
gchar filename[0];
} SpCaptureMap
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
guint32 n_jitmaps;
guint8 data[0];
} SpCaptureJitmap
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
gchar cmdline[0];
} SpCaptureProcess
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
guint32 n_addrs : 16;
guint32 padding1 : 16;
gint32 tid;
SpCaptureAddress addrs[0];
} SpCaptureSample
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
gint32 child_pid;
} SpCaptureFork
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
} SpCaptureExit
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
} SpCaptureTimestamp
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
gchar category[32];
gchar name[32];
gchar description[52];
guint32 id : 24;
guint32 type : 8;
SpCaptureCounterValue value;
} SpCaptureCounter
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
guint32 n_counters : 16;
guint32 padding1 : 16;
guint32 padding2;
SpCaptureCounter counters[0];
} SpCaptureFrameCounterDefine
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
/*
* 96 bytes might seem a bit odd, but the counter frame header is 32
* bytes. So this makes a nice 2-cacheline aligned size which is
* useful when the number of counters is rather small.
*/
guint32 ids[8];
SpCaptureCounterValue values[8];
} SpCaptureCounterValues
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
guint32 n_values : 16;
guint32 padding1 : 16;
guint32 padding2;
SpCaptureCounterValues values[0];
} SpCaptureFrameCounterSet
SP_ALIGNED_END(1);
SP_ALIGNED_BEGIN(1)
typedef struct
{
SpCaptureFrame frame;
gint64 duration;
gchar group[24];
gchar name[40];
gchar message[0];
} SpCaptureMark
SP_ALIGNED_END(1);
G_STATIC_ASSERT (sizeof (SpCaptureFileHeader) == 256);
G_STATIC_ASSERT (sizeof (SpCaptureFrame) == 24);
G_STATIC_ASSERT (sizeof (SpCaptureMap) == 56);
G_STATIC_ASSERT (sizeof (SpCaptureJitmap) == 28);
G_STATIC_ASSERT (sizeof (SpCaptureProcess) == 24);
G_STATIC_ASSERT (sizeof (SpCaptureSample) == 32);
G_STATIC_ASSERT (sizeof (SpCaptureFork) == 28);
G_STATIC_ASSERT (sizeof (SpCaptureExit) == 24);
G_STATIC_ASSERT (sizeof (SpCaptureTimestamp) == 24);
G_STATIC_ASSERT (sizeof (SpCaptureCounter) == 128);
G_STATIC_ASSERT (sizeof (SpCaptureCounterValues) == 96);
G_STATIC_ASSERT (sizeof (SpCaptureFrameCounterDefine) == 32);
G_STATIC_ASSERT (sizeof (SpCaptureFrameCounterSet) == 32);
G_STATIC_ASSERT (sizeof (SpCaptureMark) == 96);
static inline gint
sp_capture_address_compare (SpCaptureAddress a,
SpCaptureAddress b)
{
if (a < b)
return -1;
if (a > b)
return 1;
else
return 0;
}
G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-address.c /* sysprof-address.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -23,16 +23,16 @@
#ifdef __linux__ #ifdef __linux__
# include <linux/perf_event.h> # include <linux/perf_event.h>
#else #else
# include "sp-address-fallback.h" # include "sysprof-address-fallback.h"
#endif #endif
#include "sp-address.h" #include "sysprof-address.h"
gboolean gboolean
sp_address_is_context_switch (SpAddress address, sysprof_address_is_context_switch (SysprofAddress address,
SpAddressContext *context) SysprofAddressContext *context)
{ {
SpAddressContext dummy; SysprofAddressContext dummy;
if (context == NULL) if (context == NULL)
context = &dummy; context = &dummy;
@ -40,59 +40,59 @@ sp_address_is_context_switch (SpAddress address,
switch (address) switch (address)
{ {
case PERF_CONTEXT_HV: case PERF_CONTEXT_HV:
*context = SP_ADDRESS_CONTEXT_HYPERVISOR; *context = SYSPROF_ADDRESS_CONTEXT_HYPERVISOR;
return TRUE; return TRUE;
case PERF_CONTEXT_KERNEL: case PERF_CONTEXT_KERNEL:
*context = SP_ADDRESS_CONTEXT_KERNEL; *context = SYSPROF_ADDRESS_CONTEXT_KERNEL;
return TRUE; return TRUE;
case PERF_CONTEXT_USER: case PERF_CONTEXT_USER:
*context = SP_ADDRESS_CONTEXT_USER; *context = SYSPROF_ADDRESS_CONTEXT_USER;
return TRUE; return TRUE;
case PERF_CONTEXT_GUEST: case PERF_CONTEXT_GUEST:
*context = SP_ADDRESS_CONTEXT_GUEST; *context = SYSPROF_ADDRESS_CONTEXT_GUEST;
return TRUE; return TRUE;
case PERF_CONTEXT_GUEST_KERNEL: case PERF_CONTEXT_GUEST_KERNEL:
*context = SP_ADDRESS_CONTEXT_GUEST_KERNEL; *context = SYSPROF_ADDRESS_CONTEXT_GUEST_KERNEL;
return TRUE; return TRUE;
case PERF_CONTEXT_GUEST_USER: case PERF_CONTEXT_GUEST_USER:
*context = SP_ADDRESS_CONTEXT_GUEST_USER; *context = SYSPROF_ADDRESS_CONTEXT_GUEST_USER;
return TRUE; return TRUE;
default: default:
*context = SP_ADDRESS_CONTEXT_NONE; *context = SYSPROF_ADDRESS_CONTEXT_NONE;
return FALSE; return FALSE;
} }
} }
const gchar * const gchar *
sp_address_context_to_string (SpAddressContext context) sysprof_address_context_to_string (SysprofAddressContext context)
{ {
switch (context) switch (context)
{ {
case SP_ADDRESS_CONTEXT_HYPERVISOR: case SYSPROF_ADDRESS_CONTEXT_HYPERVISOR:
return "- - hypervisor - -"; return "- - hypervisor - -";
case SP_ADDRESS_CONTEXT_KERNEL: case SYSPROF_ADDRESS_CONTEXT_KERNEL:
return "- - kernel - -"; return "- - kernel - -";
case SP_ADDRESS_CONTEXT_USER: case SYSPROF_ADDRESS_CONTEXT_USER:
return "- - user - -"; return "- - user - -";
case SP_ADDRESS_CONTEXT_GUEST: case SYSPROF_ADDRESS_CONTEXT_GUEST:
return "- - guest - -"; return "- - guest - -";
case SP_ADDRESS_CONTEXT_GUEST_KERNEL: case SYSPROF_ADDRESS_CONTEXT_GUEST_KERNEL:
return "- - guest kernel - -"; return "- - guest kernel - -";
case SP_ADDRESS_CONTEXT_GUEST_USER: case SYSPROF_ADDRESS_CONTEXT_GUEST_USER:
return "- - guest user - -"; return "- - guest user - -";
case SP_ADDRESS_CONTEXT_NONE: case SYSPROF_ADDRESS_CONTEXT_NONE:
default: default:
return "- - unknown - -"; return "- - unknown - -";
} }

View File

@ -1,4 +1,4 @@
/* sp-address.h /* sysprof-address.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -24,30 +24,30 @@
G_BEGIN_DECLS G_BEGIN_DECLS
typedef guint64 SpAddress; typedef guint64 SysprofAddress;
G_STATIC_ASSERT (sizeof (SpAddress) >= sizeof (gpointer)); G_STATIC_ASSERT (sizeof (SysprofAddress) >= sizeof (gpointer));
typedef enum typedef enum
{ {
SP_ADDRESS_CONTEXT_NONE = 0, SYSPROF_ADDRESS_CONTEXT_NONE = 0,
SP_ADDRESS_CONTEXT_HYPERVISOR, SYSPROF_ADDRESS_CONTEXT_HYPERVISOR,
SP_ADDRESS_CONTEXT_KERNEL, SYSPROF_ADDRESS_CONTEXT_KERNEL,
SP_ADDRESS_CONTEXT_USER, SYSPROF_ADDRESS_CONTEXT_USER,
SP_ADDRESS_CONTEXT_GUEST, SYSPROF_ADDRESS_CONTEXT_GUEST,
SP_ADDRESS_CONTEXT_GUEST_KERNEL, SYSPROF_ADDRESS_CONTEXT_GUEST_KERNEL,
SP_ADDRESS_CONTEXT_GUEST_USER, SYSPROF_ADDRESS_CONTEXT_GUEST_USER,
} SpAddressContext; } SysprofAddressContext;
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_address_is_context_switch (SpAddress address, gboolean sysprof_address_is_context_switch (SysprofAddress address,
SpAddressContext *context); SysprofAddressContext *context);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
const gchar *sp_address_context_to_string (SpAddressContext context); const gchar *sysprof_address_context_to_string (SysprofAddressContext context);
static inline gint static inline gint
sp_address_compare (SpAddress a, sysprof_address_compare (SysprofAddress a,
SpAddress b) SysprofAddress b)
{ {
if (a < b) if (a < b)
return -1; return -1;

View File

@ -1,4 +1,4 @@
/* sp-capture-condition.c /* sysprof-capture-condition.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,20 +18,20 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-capture-condition" #define G_LOG_DOMAIN "sysprof-capture-condition"
#include "config.h" #include "config.h"
#include <string.h> #include <string.h>
#include "sp-capture-condition.h" #include "sysprof-capture-condition.h"
/** /**
* SECTION:sp-capture-condition * SECTION:sysprof-capture-condition
* @title: SpCaptureCondition * @title: SysprofCaptureCondition
* *
* The #SpCaptureCondition type is an abstraction on an operation * The #SysprofCaptureCondition type is an abstraction on an operation
* for a sort of AST to the #SpCaptureCursor. The goal is that if * for a sort of AST to the #SysprofCaptureCursor. The goal is that if
* we abstract the types of fields we want to match in the cursor * we abstract the types of fields we want to match in the cursor
* that we can opportunistically add indexes to speed up the operation * that we can opportunistically add indexes to speed up the operation
* later on without changing the implementation of cursor consumers. * later on without changing the implementation of cursor consumers.
@ -39,17 +39,17 @@
typedef enum typedef enum
{ {
SP_CAPTURE_CONDITION_AND, SYSPROF_CAPTURE_CONDITION_AND,
SP_CAPTURE_CONDITION_WHERE_TYPE_IN, SYSPROF_CAPTURE_CONDITION_WHERE_TYPE_IN,
SP_CAPTURE_CONDITION_WHERE_TIME_BETWEEN, SYSPROF_CAPTURE_CONDITION_WHERE_TIME_BETWEEN,
SP_CAPTURE_CONDITION_WHERE_PID_IN, SYSPROF_CAPTURE_CONDITION_WHERE_PID_IN,
SP_CAPTURE_CONDITION_WHERE_COUNTER_IN, SYSPROF_CAPTURE_CONDITION_WHERE_COUNTER_IN,
} SpCaptureConditionType; } SysprofCaptureConditionType;
struct _SpCaptureCondition struct _SysprofCaptureCondition
{ {
volatile gint ref_count; volatile gint ref_count;
SpCaptureConditionType type; SysprofCaptureConditionType type;
union { union {
GArray *where_type_in; GArray *where_type_in;
struct { struct {
@ -59,37 +59,37 @@ struct _SpCaptureCondition
GArray *where_pid_in; GArray *where_pid_in;
GArray *where_counter_in; GArray *where_counter_in;
struct { struct {
SpCaptureCondition *left; SysprofCaptureCondition *left;
SpCaptureCondition *right; SysprofCaptureCondition *right;
} and; } and;
} u; } u;
}; };
gboolean gboolean
sp_capture_condition_match (const SpCaptureCondition *self, sysprof_capture_condition_match (const SysprofCaptureCondition *self,
const SpCaptureFrame *frame) const SysprofCaptureFrame *frame)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (frame != NULL); g_assert (frame != NULL);
switch (self->type) switch (self->type)
{ {
case SP_CAPTURE_CONDITION_AND: case SYSPROF_CAPTURE_CONDITION_AND:
return sp_capture_condition_match (self->u.and.left, frame) && return sysprof_capture_condition_match (self->u.and.left, frame) &&
sp_capture_condition_match (self->u.and.right, frame); sysprof_capture_condition_match (self->u.and.right, frame);
case SP_CAPTURE_CONDITION_WHERE_TYPE_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_TYPE_IN:
for (guint i = 0; i < self->u.where_type_in->len; i++) for (guint i = 0; i < self->u.where_type_in->len; i++)
{ {
if (frame->type == g_array_index (self->u.where_type_in, SpCaptureFrameType, i)) if (frame->type == g_array_index (self->u.where_type_in, SysprofCaptureFrameType, i))
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
case SP_CAPTURE_CONDITION_WHERE_TIME_BETWEEN: case SYSPROF_CAPTURE_CONDITION_WHERE_TIME_BETWEEN:
return (frame->time >= self->u.where_time_between.begin && frame->time <= self->u.where_time_between.end); return (frame->time >= self->u.where_time_between.begin && frame->time <= self->u.where_time_between.end);
case SP_CAPTURE_CONDITION_WHERE_PID_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_PID_IN:
for (guint i = 0; i < self->u.where_pid_in->len; i++) for (guint i = 0; i < self->u.where_pid_in->len; i++)
{ {
if (frame->pid == g_array_index (self->u.where_pid_in, gint32, i)) if (frame->pid == g_array_index (self->u.where_pid_in, gint32, i))
@ -97,10 +97,10 @@ sp_capture_condition_match (const SpCaptureCondition *self,
} }
return FALSE; return FALSE;
case SP_CAPTURE_CONDITION_WHERE_COUNTER_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_COUNTER_IN:
if (frame->type == SP_CAPTURE_FRAME_CTRSET) if (frame->type == SYSPROF_CAPTURE_FRAME_CTRSET)
{ {
const SpCaptureFrameCounterSet *set = (SpCaptureFrameCounterSet *)frame; const SysprofCaptureFrameCounterSet *set = (SysprofCaptureFrameCounterSet *)frame;
for (guint i = 0; i < self->u.where_counter_in->len; i++) for (guint i = 0; i < self->u.where_counter_in->len; i++)
{ {
@ -120,9 +120,9 @@ sp_capture_condition_match (const SpCaptureCondition *self,
} }
} }
} }
else if (frame->type == SP_CAPTURE_FRAME_CTRDEF) else if (frame->type == SYSPROF_CAPTURE_FRAME_CTRDEF)
{ {
const SpCaptureFrameCounterDefine *def = (SpCaptureFrameCounterDefine *)frame; const SysprofCaptureFrameCounterDefine *def = (SysprofCaptureFrameCounterDefine *)frame;
for (guint i = 0; i < self->u.where_counter_in->len; i++) for (guint i = 0; i < self->u.where_counter_in->len; i++)
{ {
@ -147,47 +147,47 @@ sp_capture_condition_match (const SpCaptureCondition *self,
return FALSE; return FALSE;
} }
static SpCaptureCondition * static SysprofCaptureCondition *
sp_capture_condition_init (void) sysprof_capture_condition_init (void)
{ {
SpCaptureCondition *self; SysprofCaptureCondition *self;
self = g_slice_new0 (SpCaptureCondition); self = g_slice_new0 (SysprofCaptureCondition);
self->ref_count = 1; self->ref_count = 1;
return g_steal_pointer (&self); return g_steal_pointer (&self);
} }
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_copy (const SpCaptureCondition *self) sysprof_capture_condition_copy (const SysprofCaptureCondition *self)
{ {
SpCaptureCondition *copy; SysprofCaptureCondition *copy;
copy = sp_capture_condition_init (); copy = sysprof_capture_condition_init ();
copy->type = self->type; copy->type = self->type;
switch (self->type) switch (self->type)
{ {
case SP_CAPTURE_CONDITION_AND: case SYSPROF_CAPTURE_CONDITION_AND:
return sp_capture_condition_new_and ( return sysprof_capture_condition_new_and (
sp_capture_condition_copy (self->u.and.left), sysprof_capture_condition_copy (self->u.and.left),
sp_capture_condition_copy (self->u.and.right)); sysprof_capture_condition_copy (self->u.and.right));
case SP_CAPTURE_CONDITION_WHERE_TYPE_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_TYPE_IN:
return sp_capture_condition_new_where_type_in ( return sysprof_capture_condition_new_where_type_in (
self->u.where_type_in->len, self->u.where_type_in->len,
(const SpCaptureFrameType *)(gpointer)self->u.where_type_in->data); (const SysprofCaptureFrameType *)(gpointer)self->u.where_type_in->data);
case SP_CAPTURE_CONDITION_WHERE_TIME_BETWEEN: case SYSPROF_CAPTURE_CONDITION_WHERE_TIME_BETWEEN:
break; break;
case SP_CAPTURE_CONDITION_WHERE_PID_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_PID_IN:
return sp_capture_condition_new_where_pid_in ( return sysprof_capture_condition_new_where_pid_in (
self->u.where_pid_in->len, self->u.where_pid_in->len,
(const gint32 *)(gpointer)self->u.where_pid_in->data); (const gint32 *)(gpointer)self->u.where_pid_in->data);
case SP_CAPTURE_CONDITION_WHERE_COUNTER_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_COUNTER_IN:
return sp_capture_condition_new_where_counter_in ( return sysprof_capture_condition_new_where_counter_in (
self->u.where_counter_in->len, self->u.where_counter_in->len,
(const guint *)(gpointer)self->u.where_counter_in->data); (const guint *)(gpointer)self->u.where_counter_in->data);
@ -200,27 +200,27 @@ sp_capture_condition_copy (const SpCaptureCondition *self)
} }
static void static void
sp_capture_condition_finalize (SpCaptureCondition *self) sysprof_capture_condition_finalize (SysprofCaptureCondition *self)
{ {
switch (self->type) switch (self->type)
{ {
case SP_CAPTURE_CONDITION_AND: case SYSPROF_CAPTURE_CONDITION_AND:
sp_capture_condition_unref (self->u.and.left); sysprof_capture_condition_unref (self->u.and.left);
sp_capture_condition_unref (self->u.and.right); sysprof_capture_condition_unref (self->u.and.right);
break; break;
case SP_CAPTURE_CONDITION_WHERE_TYPE_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_TYPE_IN:
g_array_free (self->u.where_type_in, TRUE); g_array_free (self->u.where_type_in, TRUE);
break; break;
case SP_CAPTURE_CONDITION_WHERE_TIME_BETWEEN: case SYSPROF_CAPTURE_CONDITION_WHERE_TIME_BETWEEN:
break; break;
case SP_CAPTURE_CONDITION_WHERE_PID_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_PID_IN:
g_array_free (self->u.where_pid_in, TRUE); g_array_free (self->u.where_pid_in, TRUE);
break; break;
case SP_CAPTURE_CONDITION_WHERE_COUNTER_IN: case SYSPROF_CAPTURE_CONDITION_WHERE_COUNTER_IN:
g_array_free (self->u.where_counter_in, TRUE); g_array_free (self->u.where_counter_in, TRUE);
break; break;
@ -229,11 +229,11 @@ sp_capture_condition_finalize (SpCaptureCondition *self)
break; break;
} }
g_slice_free (SpCaptureCondition, self); g_slice_free (SysprofCaptureCondition, self);
} }
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_ref (SpCaptureCondition *self) sysprof_capture_condition_ref (SysprofCaptureCondition *self)
{ {
g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (self != NULL, NULL);
g_return_val_if_fail (self->ref_count > 0, NULL); g_return_val_if_fail (self->ref_count > 0, NULL);
@ -243,37 +243,37 @@ sp_capture_condition_ref (SpCaptureCondition *self)
} }
void void
sp_capture_condition_unref (SpCaptureCondition *self) sysprof_capture_condition_unref (SysprofCaptureCondition *self)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
g_return_if_fail (self->ref_count > 0); g_return_if_fail (self->ref_count > 0);
if (g_atomic_int_dec_and_test (&self->ref_count)) if (g_atomic_int_dec_and_test (&self->ref_count))
sp_capture_condition_finalize (self); sysprof_capture_condition_finalize (self);
} }
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_new_where_type_in (guint n_types, sysprof_capture_condition_new_where_type_in (guint n_types,
const SpCaptureFrameType *types) const SysprofCaptureFrameType *types)
{ {
SpCaptureCondition *self; SysprofCaptureCondition *self;
g_return_val_if_fail (types != NULL, NULL); g_return_val_if_fail (types != NULL, NULL);
self = sp_capture_condition_init (); self = sysprof_capture_condition_init ();
self->type = SP_CAPTURE_CONDITION_WHERE_TYPE_IN; self->type = SYSPROF_CAPTURE_CONDITION_WHERE_TYPE_IN;
self->u.where_type_in = g_array_sized_new (FALSE, FALSE, sizeof (SpCaptureFrameType), n_types); self->u.where_type_in = g_array_sized_new (FALSE, FALSE, sizeof (SysprofCaptureFrameType), n_types);
g_array_set_size (self->u.where_type_in, n_types); g_array_set_size (self->u.where_type_in, n_types);
memcpy (self->u.where_type_in->data, types, sizeof (SpCaptureFrameType) * n_types); memcpy (self->u.where_type_in->data, types, sizeof (SysprofCaptureFrameType) * n_types);
return self; return self;
} }
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_new_where_time_between (gint64 begin_time, sysprof_capture_condition_new_where_time_between (gint64 begin_time,
gint64 end_time) gint64 end_time)
{ {
SpCaptureCondition *self; SysprofCaptureCondition *self;
if G_UNLIKELY (begin_time > end_time) if G_UNLIKELY (begin_time > end_time)
{ {
@ -282,24 +282,24 @@ sp_capture_condition_new_where_time_between (gint64 begin_time,
end_time = tmp; end_time = tmp;
} }
self = sp_capture_condition_init (); self = sysprof_capture_condition_init ();
self->type = SP_CAPTURE_CONDITION_WHERE_TIME_BETWEEN; self->type = SYSPROF_CAPTURE_CONDITION_WHERE_TIME_BETWEEN;
self->u.where_time_between.begin = begin_time; self->u.where_time_between.begin = begin_time;
self->u.where_time_between.end = end_time; self->u.where_time_between.end = end_time;
return self; return self;
} }
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_new_where_pid_in (guint n_pids, sysprof_capture_condition_new_where_pid_in (guint n_pids,
const gint32 *pids) const gint32 *pids)
{ {
SpCaptureCondition *self; SysprofCaptureCondition *self;
g_return_val_if_fail (pids != NULL, NULL); g_return_val_if_fail (pids != NULL, NULL);
self = sp_capture_condition_init (); self = sysprof_capture_condition_init ();
self->type = SP_CAPTURE_CONDITION_WHERE_PID_IN; self->type = SYSPROF_CAPTURE_CONDITION_WHERE_PID_IN;
self->u.where_pid_in = g_array_sized_new (FALSE, FALSE, sizeof (gint32), n_pids); self->u.where_pid_in = g_array_sized_new (FALSE, FALSE, sizeof (gint32), n_pids);
g_array_set_size (self->u.where_pid_in, n_pids); g_array_set_size (self->u.where_pid_in, n_pids);
memcpy (self->u.where_pid_in->data, pids, sizeof (gint32) * n_pids); memcpy (self->u.where_pid_in->data, pids, sizeof (gint32) * n_pids);
@ -307,16 +307,16 @@ sp_capture_condition_new_where_pid_in (guint n_pids,
return self; return self;
} }
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_new_where_counter_in (guint n_counters, sysprof_capture_condition_new_where_counter_in (guint n_counters,
const guint *counters) const guint *counters)
{ {
SpCaptureCondition *self; SysprofCaptureCondition *self;
g_return_val_if_fail (counters != NULL || n_counters == 0, NULL); g_return_val_if_fail (counters != NULL || n_counters == 0, NULL);
self = sp_capture_condition_init (); self = sysprof_capture_condition_init ();
self->type = SP_CAPTURE_CONDITION_WHERE_COUNTER_IN; self->type = SYSPROF_CAPTURE_CONDITION_WHERE_COUNTER_IN;
self->u.where_counter_in = g_array_sized_new (FALSE, FALSE, sizeof (guint), n_counters); self->u.where_counter_in = g_array_sized_new (FALSE, FALSE, sizeof (guint), n_counters);
if (n_counters > 0) if (n_counters > 0)
@ -329,26 +329,26 @@ sp_capture_condition_new_where_counter_in (guint n_counters,
} }
/** /**
* sp_capture_condition_new_and: * sysprof_capture_condition_new_and:
* @left: (transfer full): An #SpCaptureCondition * @left: (transfer full): An #SysprofCaptureCondition
* @right: (transfer full): An #SpCaptureCondition * @right: (transfer full): An #SysprofCaptureCondition
* *
* Creates a new #SpCaptureCondition that requires both left and right * Creates a new #SysprofCaptureCondition that requires both left and right
* to evaluate to %TRUE. * to evaluate to %TRUE.
* *
* Returns: (transfer full): A new #SpCaptureCondition. * Returns: (transfer full): A new #SysprofCaptureCondition.
*/ */
SpCaptureCondition * SysprofCaptureCondition *
sp_capture_condition_new_and (SpCaptureCondition *left, sysprof_capture_condition_new_and (SysprofCaptureCondition *left,
SpCaptureCondition *right) SysprofCaptureCondition *right)
{ {
SpCaptureCondition *self; SysprofCaptureCondition *self;
g_return_val_if_fail (left != NULL, NULL); g_return_val_if_fail (left != NULL, NULL);
g_return_val_if_fail (right != NULL, NULL); g_return_val_if_fail (right != NULL, NULL);
self = sp_capture_condition_init (); self = sysprof_capture_condition_init ();
self->type = SP_CAPTURE_CONDITION_AND; self->type = SYSPROF_CAPTURE_CONDITION_AND;
self->u.and.left = left; self->u.and.left = left;
self->u.and.right = right; self->u.and.right = right;

View File

@ -1,4 +1,4 @@
/* sp-capture-condition.h /* sysprof-capture-condition.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,36 +20,36 @@
#pragma once #pragma once
#include "sp-capture-types.h" #include "sysprof-capture-types.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_copy (const SpCaptureCondition *self); SysprofCaptureCondition *sysprof_capture_condition_copy (const SysprofCaptureCondition *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_condition_unref (SpCaptureCondition *self); void sysprof_capture_condition_unref (SysprofCaptureCondition *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_ref (SpCaptureCondition *self); SysprofCaptureCondition *sysprof_capture_condition_ref (SysprofCaptureCondition *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_new_and (SpCaptureCondition *left, SysprofCaptureCondition *sysprof_capture_condition_new_and (SysprofCaptureCondition *left,
SpCaptureCondition *right); SysprofCaptureCondition *right);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_new_where_type_in (guint n_types, SysprofCaptureCondition *sysprof_capture_condition_new_where_type_in (guint n_types,
const SpCaptureFrameType *types); const SysprofCaptureFrameType *types);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_new_where_time_between (gint64 begin_time, SysprofCaptureCondition *sysprof_capture_condition_new_where_time_between (gint64 begin_time,
gint64 end_time); gint64 end_time);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_new_where_pid_in (guint n_pids, SysprofCaptureCondition *sysprof_capture_condition_new_where_pid_in (guint n_pids,
const gint32 *pids); const gint32 *pids);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCondition *sp_capture_condition_new_where_counter_in (guint n_counters, SysprofCaptureCondition *sysprof_capture_condition_new_where_counter_in (guint n_counters,
const guint *counters); const guint *counters);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_condition_match (const SpCaptureCondition *self, gboolean sysprof_capture_condition_match (const SysprofCaptureCondition *self,
const SpCaptureFrame *frame); const SysprofCaptureFrame *frame);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpCaptureCondition, sp_capture_condition_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureCondition, sysprof_capture_condition_unref)
G_END_DECLS G_END_DECLS

View File

@ -0,0 +1,265 @@
/* sysprof-capture-cursor.c
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This file 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 file 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 General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#define G_LOG_DOMAIN "sysprof-capture-cursor"
#include "config.h"
#include "sysprof-capture-condition.h"
#include "sysprof-capture-cursor.h"
#include "sysprof-capture-reader.h"
#define READ_DELEGATE(f) ((ReadDelegate)(f))
typedef const SysprofCaptureFrame *(*ReadDelegate) (SysprofCaptureReader *);
struct _SysprofCaptureCursor
{
volatile gint ref_count;
GPtrArray *conditions;
SysprofCaptureReader *reader;
guint reversed : 1;
};
static void
sysprof_capture_cursor_finalize (SysprofCaptureCursor *self)
{
g_clear_pointer (&self->conditions, g_ptr_array_unref);
g_clear_pointer (&self->reader, sysprof_capture_reader_unref);
g_slice_free (SysprofCaptureCursor, self);
}
static SysprofCaptureCursor *
sysprof_capture_cursor_init (void)
{
SysprofCaptureCursor *self;
self = g_slice_new0 (SysprofCaptureCursor);
self->conditions = g_ptr_array_new_with_free_func ((GDestroyNotify) sysprof_capture_condition_unref);
self->ref_count = 1;
return g_steal_pointer (&self);
}
/**
* sysprof_capture_cursor_ref:
* @self: a #SysprofCaptureCursor
*
* Returns: (transfer full): @self
*
* Since: 3.34
*/
SysprofCaptureCursor *
sysprof_capture_cursor_ref (SysprofCaptureCursor *self)
{
g_return_val_if_fail (self != NULL, NULL);
g_return_val_if_fail (self->ref_count > 0, NULL);
g_atomic_int_inc (&self->ref_count);
return self;
}
/**
* sysprof_capture_cursor_unref:
* @self: a #SysprofCaptureCursor
*
* Since: 3.34
*/
void
sysprof_capture_cursor_unref (SysprofCaptureCursor *self)
{
g_return_if_fail (self != NULL);
g_return_if_fail (self->ref_count > 0);
if (g_atomic_int_dec_and_test (&self->ref_count))
sysprof_capture_cursor_finalize (self);
}
/**
* sysprof_capture_cursor_foreach:
* @self: a #SysprofCaptureCursor
* @callback: (scope call): a closure to execute
* @user_data: user data for @callback
*
*/
void
sysprof_capture_cursor_foreach (SysprofCaptureCursor *self,
SysprofCaptureCursorCallback callback,
gpointer user_data)
{
g_return_if_fail (self != NULL);
g_return_if_fail (self->reader != NULL);
g_return_if_fail (callback != NULL);
for (;;)
{
const SysprofCaptureFrame *frame;
SysprofCaptureFrameType type = 0;
ReadDelegate delegate = NULL;
if (!sysprof_capture_reader_peek_type (self->reader, &type))
return;
switch (type)
{
case SYSPROF_CAPTURE_FRAME_TIMESTAMP:
delegate = READ_DELEGATE (sysprof_capture_reader_read_timestamp);
break;
case SYSPROF_CAPTURE_FRAME_SAMPLE:
delegate = READ_DELEGATE (sysprof_capture_reader_read_sample);
break;
case SYSPROF_CAPTURE_FRAME_MAP:
delegate = READ_DELEGATE (sysprof_capture_reader_read_map);
break;
case SYSPROF_CAPTURE_FRAME_MARK:
delegate = READ_DELEGATE (sysprof_capture_reader_read_mark);
break;
case SYSPROF_CAPTURE_FRAME_PROCESS:
delegate = READ_DELEGATE (sysprof_capture_reader_read_process);
break;
case SYSPROF_CAPTURE_FRAME_FORK:
delegate = READ_DELEGATE (sysprof_capture_reader_read_fork);
break;
case SYSPROF_CAPTURE_FRAME_EXIT:
delegate = READ_DELEGATE (sysprof_capture_reader_read_exit);
break;
case SYSPROF_CAPTURE_FRAME_JITMAP:
delegate = READ_DELEGATE (sysprof_capture_reader_read_jitmap);
break;
case SYSPROF_CAPTURE_FRAME_CTRDEF:
delegate = READ_DELEGATE (sysprof_capture_reader_read_counter_define);
break;
case SYSPROF_CAPTURE_FRAME_CTRSET:
delegate = READ_DELEGATE (sysprof_capture_reader_read_counter_set);
break;
default:
if (!sysprof_capture_reader_skip (self->reader))
return;
delegate = NULL;
break;
}
if (delegate == NULL)
continue;
if (NULL == (frame = delegate (self->reader)))
return;
if (self->conditions->len == 0)
{
if (!callback (frame, user_data))
return;
}
else
{
for (guint i = 0; i < self->conditions->len; i++)
{
const SysprofCaptureCondition *condition = g_ptr_array_index (self->conditions, i);
if (sysprof_capture_condition_match (condition, frame))
{
if (!callback (frame, user_data))
return;
break;
}
}
}
}
}
void
sysprof_capture_cursor_reset (SysprofCaptureCursor *self)
{
g_return_if_fail (self != NULL);
g_return_if_fail (self->reader != NULL);
sysprof_capture_reader_reset (self->reader);
}
void
sysprof_capture_cursor_reverse (SysprofCaptureCursor *self)
{
g_return_if_fail (self != NULL);
self->reversed = !self->reversed;
}
/**
* sysprof_capture_cursor_add_condition:
* @self: An #SysprofCaptureCursor
* @condition: (transfer full): An #SysprofCaptureCondition
*
* Adds the condition to the cursor. This condition must evaluate to
* true or a given #SysprofCapureFrame will not be matched.
*/
void
sysprof_capture_cursor_add_condition (SysprofCaptureCursor *self,
SysprofCaptureCondition *condition)
{
g_return_if_fail (self != NULL);
g_return_if_fail (condition != NULL);
g_ptr_array_add (self->conditions, condition);
}
/**
* sysprof_capture_cursor_new:
* @self: a #SysprofCaptureCursor
*
* Returns: (transfer full): a new cursor for @reader
*/
SysprofCaptureCursor *
sysprof_capture_cursor_new (SysprofCaptureReader *reader)
{
SysprofCaptureCursor *self;
g_return_val_if_fail (reader != NULL, NULL);
self = sysprof_capture_cursor_init ();
self->reader = sysprof_capture_reader_copy (reader);
sysprof_capture_reader_reset (self->reader);
return self;
}
/**
* sysprof_capture_cursor_get_reader:
*
* Gets the underlying reader that is used by the cursor.
*
* Returns: (transfer none): An #SysprofCaptureReader
*/
SysprofCaptureReader *
sysprof_capture_cursor_get_reader (SysprofCaptureCursor *self)
{
g_return_val_if_fail (self != NULL, NULL);
return self->reader;
}

View File

@ -1,4 +1,4 @@
/* sp-capture-cursor.h /* sysprof-capture-cursor.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,15 +20,15 @@
#pragma once #pragma once
#include "sp-capture-types.h" #include "sysprof-capture-types.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct _SpCaptureCursor SpCaptureCursor; typedef struct _SysprofCaptureCursor SysprofCaptureCursor;
/** /**
* SpCaptureCursorCallback: * SysprofCaptureCursorCallback:
* *
* This is the prototype for callbacks that are called for each frame * This is the prototype for callbacks that are called for each frame
* matching the cursor query. * matching the cursor query.
@ -38,29 +38,29 @@ typedef struct _SpCaptureCursor SpCaptureCursor;
* *
* Returns: %TRUE if iteration should stop, otherwise %FALSE. * Returns: %TRUE if iteration should stop, otherwise %FALSE.
*/ */
typedef gboolean (*SpCaptureCursorCallback) (const SpCaptureFrame *frame, typedef gboolean (*SysprofCaptureCursorCallback) (const SysprofCaptureFrame *frame,
gpointer user_data); gpointer user_data);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCursor *sp_capture_cursor_new (SpCaptureReader *reader); SysprofCaptureCursor *sysprof_capture_cursor_new (SysprofCaptureReader *reader);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_cursor_unref (SpCaptureCursor *self); void sysprof_capture_cursor_unref (SysprofCaptureCursor *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureCursor *sp_capture_cursor_ref (SpCaptureCursor *self); SysprofCaptureCursor *sysprof_capture_cursor_ref (SysprofCaptureCursor *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_capture_cursor_get_reader (SpCaptureCursor *self); SysprofCaptureReader *sysprof_capture_cursor_get_reader (SysprofCaptureCursor *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_cursor_foreach (SpCaptureCursor *self, void sysprof_capture_cursor_foreach (SysprofCaptureCursor *self,
SpCaptureCursorCallback callback, SysprofCaptureCursorCallback callback,
gpointer user_data); gpointer user_data);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_cursor_reset (SpCaptureCursor *self); void sysprof_capture_cursor_reset (SysprofCaptureCursor *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_cursor_reverse (SpCaptureCursor *self); void sysprof_capture_cursor_reverse (SysprofCaptureCursor *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_cursor_add_condition (SpCaptureCursor *self, void sysprof_capture_cursor_add_condition (SysprofCaptureCursor *self,
SpCaptureCondition *condition); SysprofCaptureCondition *condition);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpCaptureCursor, sp_capture_cursor_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureCursor, sysprof_capture_cursor_unref)
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-capture-reader.c /* sysprof-capture-reader.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-capture-reader" #define G_LOG_DOMAIN "sysprof-capture-reader"
#include "config.h" #include "config.h"
@ -29,11 +29,11 @@
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
#include "sp-capture-reader.h" #include "sysprof-capture-reader.h"
#include "sp-capture-util-private.h" #include "sysprof-capture-util-private.h"
#include "sp-capture-writer.h" #include "sysprof-capture-writer.h"
struct _SpCaptureReader struct _SysprofCaptureReader
{ {
volatile gint ref_count; volatile gint ref_count;
gchar *filename; gchar *filename;
@ -44,24 +44,24 @@ struct _SpCaptureReader
gsize fd_off; gsize fd_off;
int fd; int fd;
gint endian; gint endian;
SpCaptureFileHeader header; SysprofCaptureFileHeader header;
gint64 end_time; gint64 end_time;
}; };
#ifdef SP_ENABLE_GOBJECT #ifdef SYSPROF_ENABLE_GOBJECT
G_DEFINE_BOXED_TYPE (SpCaptureReader, sp_capture_reader, G_DEFINE_BOXED_TYPE (SysprofCaptureReader, sysprof_capture_reader,
sp_capture_reader_ref, sp_capture_reader_unref) sysprof_capture_reader_ref, sysprof_capture_reader_unref)
#endif #endif
static gboolean static gboolean
sp_capture_reader_read_file_header (SpCaptureReader *self, sysprof_capture_reader_read_file_header (SysprofCaptureReader *self,
SpCaptureFileHeader *header, SysprofCaptureFileHeader *header,
GError **error) GError **error)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (header != NULL); g_assert (header != NULL);
if (sizeof *header != _sp_pread (self->fd, header, sizeof *header, 0L)) if (sizeof *header != _sysprof_pread (self->fd, header, sizeof *header, 0L))
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
@ -70,7 +70,7 @@ sp_capture_reader_read_file_header (SpCaptureReader *self,
return FALSE; return FALSE;
} }
if (header->magic != SP_CAPTURE_MAGIC) if (header->magic != SYSPROF_CAPTURE_MAGIC)
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
@ -85,7 +85,7 @@ sp_capture_reader_read_file_header (SpCaptureReader *self,
} }
static void static void
sp_capture_reader_finalize (SpCaptureReader *self) sysprof_capture_reader_finalize (SysprofCaptureReader *self)
{ {
if (self != NULL) if (self != NULL)
{ {
@ -97,7 +97,7 @@ sp_capture_reader_finalize (SpCaptureReader *self)
} }
const gchar * const gchar *
sp_capture_reader_get_time (SpCaptureReader *self) sysprof_capture_reader_get_time (SysprofCaptureReader *self)
{ {
g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (self != NULL, NULL);
@ -105,7 +105,7 @@ sp_capture_reader_get_time (SpCaptureReader *self)
} }
const gchar * const gchar *
sp_capture_reader_get_filename (SpCaptureReader *self) sysprof_capture_reader_get_filename (SysprofCaptureReader *self)
{ {
g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (self != NULL, NULL);
@ -113,7 +113,7 @@ sp_capture_reader_get_filename (SpCaptureReader *self)
} }
/** /**
* sp_capture_reader_new_from_fd: * sysprof_capture_reader_new_from_fd:
* @fd: an fd to take ownership from * @fd: an fd to take ownership from
* @error: a location for a #GError or %NULL * @error: a location for a #GError or %NULL
* *
@ -121,28 +121,28 @@ sp_capture_reader_get_filename (SpCaptureReader *self)
* *
* This is useful if you don't necessarily have access to the filename itself. * This is useful if you don't necessarily have access to the filename itself.
* *
* Returns: (transfer full): an #SpCaptureReader or %NULL upon failure. * Returns: (transfer full): an #SysprofCaptureReader or %NULL upon failure.
*/ */
SpCaptureReader * SysprofCaptureReader *
sp_capture_reader_new_from_fd (int fd, sysprof_capture_reader_new_from_fd (int fd,
GError **error) GError **error)
{ {
SpCaptureReader *self; SysprofCaptureReader *self;
g_assert (fd > -1); g_assert (fd > -1);
self = g_new0 (SpCaptureReader, 1); self = g_new0 (SysprofCaptureReader, 1);
self->ref_count = 1; self->ref_count = 1;
self->bufsz = G_MAXUSHORT * 2; self->bufsz = G_MAXUSHORT * 2;
self->buf = g_malloc (self->bufsz); self->buf = g_malloc (self->bufsz);
self->len = 0; self->len = 0;
self->pos = 0; self->pos = 0;
self->fd = fd; self->fd = fd;
self->fd_off = sizeof (SpCaptureFileHeader); self->fd_off = sizeof (SysprofCaptureFileHeader);
if (!sp_capture_reader_read_file_header (self, &self->header, error)) if (!sysprof_capture_reader_read_file_header (self, &self->header, error))
{ {
sp_capture_reader_finalize (self); sysprof_capture_reader_finalize (self);
return NULL; return NULL;
} }
@ -154,11 +154,11 @@ sp_capture_reader_new_from_fd (int fd,
return self; return self;
} }
SpCaptureReader * SysprofCaptureReader *
sp_capture_reader_new (const gchar *filename, sysprof_capture_reader_new (const gchar *filename,
GError **error) GError **error)
{ {
SpCaptureReader *self; SysprofCaptureReader *self;
int fd; int fd;
g_assert (filename != NULL); g_assert (filename != NULL);
@ -172,7 +172,7 @@ sp_capture_reader_new (const gchar *filename,
return NULL; return NULL;
} }
if (NULL == (self = sp_capture_reader_new_from_fd (fd, error))) if (NULL == (self = sysprof_capture_reader_new_from_fd (fd, error)))
{ {
close (fd); close (fd);
return NULL; return NULL;
@ -184,8 +184,8 @@ sp_capture_reader_new (const gchar *filename,
} }
static inline void static inline void
sp_capture_reader_bswap_frame (SpCaptureReader *self, sysprof_capture_reader_bswap_frame (SysprofCaptureReader *self,
SpCaptureFrame *frame) SysprofCaptureFrame *frame)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (frame!= NULL); g_assert (frame!= NULL);
@ -200,8 +200,8 @@ sp_capture_reader_bswap_frame (SpCaptureReader *self,
} }
static inline void static inline void
sp_capture_reader_bswap_map (SpCaptureReader *self, sysprof_capture_reader_bswap_map (SysprofCaptureReader *self,
SpCaptureMap *map) SysprofCaptureMap *map)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (map != NULL); g_assert (map != NULL);
@ -216,8 +216,8 @@ sp_capture_reader_bswap_map (SpCaptureReader *self,
} }
static inline void static inline void
sp_capture_reader_bswap_mark (SpCaptureReader *self, sysprof_capture_reader_bswap_mark (SysprofCaptureReader *self,
SpCaptureMark *mark) SysprofCaptureMark *mark)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (mark != NULL); g_assert (mark != NULL);
@ -227,8 +227,8 @@ sp_capture_reader_bswap_mark (SpCaptureReader *self,
} }
static inline void static inline void
sp_capture_reader_bswap_jitmap (SpCaptureReader *self, sysprof_capture_reader_bswap_jitmap (SysprofCaptureReader *self,
SpCaptureJitmap *jitmap) SysprofCaptureJitmap *jitmap)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (jitmap != NULL); g_assert (jitmap != NULL);
@ -238,7 +238,7 @@ sp_capture_reader_bswap_jitmap (SpCaptureReader *self,
} }
static gboolean static gboolean
sp_capture_reader_ensure_space_for (SpCaptureReader *self, sysprof_capture_reader_ensure_space_for (SysprofCaptureReader *self,
gsize len) gsize len)
{ {
g_assert (self != NULL); g_assert (self != NULL);
@ -260,7 +260,7 @@ sp_capture_reader_ensure_space_for (SpCaptureReader *self,
g_assert (self->len < self->bufsz); g_assert (self->len < self->bufsz);
/* Read into our buffer after our current read position */ /* Read into our buffer after our current read position */
r = _sp_pread (self->fd, r = _sysprof_pread (self->fd,
&self->buf[self->len], &self->buf[self->len],
self->bufsz - self->len, self->bufsz - self->len,
self->fd_off); self->fd_off);
@ -277,56 +277,56 @@ sp_capture_reader_ensure_space_for (SpCaptureReader *self,
} }
gboolean gboolean
sp_capture_reader_skip (SpCaptureReader *self) sysprof_capture_reader_skip (SysprofCaptureReader *self)
{ {
SpCaptureFrame *frame; SysprofCaptureFrame *frame;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
if (!sp_capture_reader_ensure_space_for (self, sizeof (SpCaptureFrame))) if (!sysprof_capture_reader_ensure_space_for (self, sizeof (SysprofCaptureFrame)))
return FALSE; return FALSE;
frame = (SpCaptureFrame *)(gpointer)&self->buf[self->pos]; frame = (SysprofCaptureFrame *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, frame); sysprof_capture_reader_bswap_frame (self, frame);
if (frame->len < sizeof (SpCaptureFrame)) if (frame->len < sizeof (SysprofCaptureFrame))
return FALSE; return FALSE;
if (!sp_capture_reader_ensure_space_for (self, frame->len)) if (!sysprof_capture_reader_ensure_space_for (self, frame->len))
return FALSE; return FALSE;
frame = (SpCaptureFrame *)(gpointer)&self->buf[self->pos]; frame = (SysprofCaptureFrame *)(gpointer)&self->buf[self->pos];
self->pos += frame->len; self->pos += frame->len;
if ((self->pos % SP_CAPTURE_ALIGN) != 0) if ((self->pos % SYSPROF_CAPTURE_ALIGN) != 0)
return FALSE; return FALSE;
return TRUE; return TRUE;
} }
gboolean gboolean
sp_capture_reader_peek_frame (SpCaptureReader *self, sysprof_capture_reader_peek_frame (SysprofCaptureReader *self,
SpCaptureFrame *frame) SysprofCaptureFrame *frame)
{ {
SpCaptureFrame *real_frame; SysprofCaptureFrame *real_frame;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->len); g_assert (self->pos <= self->len);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *real_frame)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *real_frame))
return FALSE; return FALSE;
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
real_frame = (SpCaptureFrame *)(gpointer)&self->buf[self->pos]; real_frame = (SysprofCaptureFrame *)(gpointer)&self->buf[self->pos];
*frame = *real_frame; *frame = *real_frame;
sp_capture_reader_bswap_frame (self, frame); sysprof_capture_reader_bswap_frame (self, frame);
if (frame->time > self->end_time) if (frame->time > self->end_time)
self->end_time = frame->time; self->end_time = frame->time;
@ -335,15 +335,15 @@ sp_capture_reader_peek_frame (SpCaptureReader *self,
} }
gboolean gboolean
sp_capture_reader_peek_type (SpCaptureReader *self, sysprof_capture_reader_peek_type (SysprofCaptureReader *self,
SpCaptureFrameType *type) SysprofCaptureFrameType *type)
{ {
SpCaptureFrame frame; SysprofCaptureFrame frame;
g_assert (self != NULL); g_assert (self != NULL);
g_assert (type != NULL); g_assert (type != NULL);
if (!sp_capture_reader_peek_frame (self, &frame)) if (!sysprof_capture_reader_peek_frame (self, &frame))
return FALSE; return FALSE;
*type = frame.type; *type = frame.type;
@ -351,24 +351,24 @@ sp_capture_reader_peek_type (SpCaptureReader *self,
return TRUE; return TRUE;
} }
static const SpCaptureFrame * static const SysprofCaptureFrame *
sp_capture_reader_read_basic (SpCaptureReader *self, sysprof_capture_reader_read_basic (SysprofCaptureReader *self,
SpCaptureFrameType type, SysprofCaptureFrameType type,
gsize extra) gsize extra)
{ {
SpCaptureFrame *frame; SysprofCaptureFrame *frame;
gsize len = sizeof *frame + extra; gsize len = sizeof *frame + extra;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, len)) if (!sysprof_capture_reader_ensure_space_for (self, len))
return NULL; return NULL;
frame = (SpCaptureFrame *)(gpointer)&self->buf[self->pos]; frame = (SysprofCaptureFrame *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, frame); sysprof_capture_reader_bswap_frame (self, frame);
if (frame->len < len) if (frame->len < len)
return NULL; return NULL;
@ -381,29 +381,29 @@ sp_capture_reader_read_basic (SpCaptureReader *self,
return frame; return frame;
} }
const SpCaptureTimestamp * const SysprofCaptureTimestamp *
sp_capture_reader_read_timestamp (SpCaptureReader *self) sysprof_capture_reader_read_timestamp (SysprofCaptureReader *self)
{ {
return (SpCaptureTimestamp *) return (SysprofCaptureTimestamp *)
sp_capture_reader_read_basic (self, SP_CAPTURE_FRAME_TIMESTAMP, 0); sysprof_capture_reader_read_basic (self, SYSPROF_CAPTURE_FRAME_TIMESTAMP, 0);
} }
const SpCaptureExit * const SysprofCaptureExit *
sp_capture_reader_read_exit (SpCaptureReader *self) sysprof_capture_reader_read_exit (SysprofCaptureReader *self)
{ {
return (SpCaptureExit *) return (SysprofCaptureExit *)
sp_capture_reader_read_basic (self, SP_CAPTURE_FRAME_EXIT, 0); sysprof_capture_reader_read_basic (self, SYSPROF_CAPTURE_FRAME_EXIT, 0);
} }
const SpCaptureFork * const SysprofCaptureFork *
sp_capture_reader_read_fork (SpCaptureReader *self) sysprof_capture_reader_read_fork (SysprofCaptureReader *self)
{ {
SpCaptureFork *fk; SysprofCaptureFork *fk;
g_assert (self != NULL); g_assert (self != NULL);
fk = (SpCaptureFork *) fk = (SysprofCaptureFork *)
sp_capture_reader_read_basic (self, SP_CAPTURE_FRAME_FORK, sizeof(guint32)); sysprof_capture_reader_read_basic (self, SYSPROF_CAPTURE_FRAME_FORK, sizeof(guint32));
if (fk != NULL) if (fk != NULL)
{ {
@ -414,78 +414,78 @@ sp_capture_reader_read_fork (SpCaptureReader *self)
return fk; return fk;
} }
const SpCaptureMap * const SysprofCaptureMap *
sp_capture_reader_read_map (SpCaptureReader *self) sysprof_capture_reader_read_map (SysprofCaptureReader *self)
{ {
SpCaptureMap *map; SysprofCaptureMap *map;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *map)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *map))
return NULL; return NULL;
map = (SpCaptureMap *)(gpointer)&self->buf[self->pos]; map = (SysprofCaptureMap *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, &map->frame); sysprof_capture_reader_bswap_frame (self, &map->frame);
if (map->frame.type != SP_CAPTURE_FRAME_MAP) if (map->frame.type != SYSPROF_CAPTURE_FRAME_MAP)
return NULL; return NULL;
if (map->frame.len < (sizeof *map + 1)) if (map->frame.len < (sizeof *map + 1))
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, map->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, map->frame.len))
return NULL; return NULL;
map = (SpCaptureMap *)(gpointer)&self->buf[self->pos]; map = (SysprofCaptureMap *)(gpointer)&self->buf[self->pos];
if (self->buf[self->pos + map->frame.len - 1] != '\0') if (self->buf[self->pos + map->frame.len - 1] != '\0')
return NULL; return NULL;
sp_capture_reader_bswap_map (self, map); sysprof_capture_reader_bswap_map (self, map);
self->pos += map->frame.len; self->pos += map->frame.len;
if ((self->pos % SP_CAPTURE_ALIGN) != 0) if ((self->pos % SYSPROF_CAPTURE_ALIGN) != 0)
return NULL; return NULL;
return map; return map;
} }
const SpCaptureMark * const SysprofCaptureMark *
sp_capture_reader_read_mark (SpCaptureReader *self) sysprof_capture_reader_read_mark (SysprofCaptureReader *self)
{ {
SpCaptureMark *mark; SysprofCaptureMark *mark;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *mark)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *mark))
return NULL; return NULL;
mark = (SpCaptureMark *)(gpointer)&self->buf[self->pos]; mark = (SysprofCaptureMark *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, &mark->frame); sysprof_capture_reader_bswap_frame (self, &mark->frame);
if (mark->frame.type != SP_CAPTURE_FRAME_MARK) if (mark->frame.type != SYSPROF_CAPTURE_FRAME_MARK)
return NULL; return NULL;
if (mark->frame.len < (sizeof *mark + 1)) if (mark->frame.len < (sizeof *mark + 1))
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, mark->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, mark->frame.len))
return NULL; return NULL;
mark = (SpCaptureMark *)(gpointer)&self->buf[self->pos]; mark = (SysprofCaptureMark *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_mark (self, mark); sysprof_capture_reader_bswap_mark (self, mark);
self->pos += mark->frame.len; self->pos += mark->frame.len;
if ((self->pos % SP_CAPTURE_ALIGN) != 0) if ((self->pos % SYSPROF_CAPTURE_ALIGN) != 0)
return NULL; return NULL;
/* Ensure trailing \0 in name and message */ /* Ensure trailing \0 in name and message */
@ -495,74 +495,74 @@ sp_capture_reader_read_mark (SpCaptureReader *self)
return mark; return mark;
} }
const SpCaptureProcess * const SysprofCaptureProcess *
sp_capture_reader_read_process (SpCaptureReader *self) sysprof_capture_reader_read_process (SysprofCaptureReader *self)
{ {
SpCaptureProcess *process; SysprofCaptureProcess *process;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *process)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *process))
return NULL; return NULL;
process = (SpCaptureProcess *)(gpointer)&self->buf[self->pos]; process = (SysprofCaptureProcess *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, &process->frame); sysprof_capture_reader_bswap_frame (self, &process->frame);
if (process->frame.type != SP_CAPTURE_FRAME_PROCESS) if (process->frame.type != SYSPROF_CAPTURE_FRAME_PROCESS)
return NULL; return NULL;
if (process->frame.len < (sizeof *process + 1)) if (process->frame.len < (sizeof *process + 1))
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, process->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, process->frame.len))
return NULL; return NULL;
process = (SpCaptureProcess *)(gpointer)&self->buf[self->pos]; process = (SysprofCaptureProcess *)(gpointer)&self->buf[self->pos];
if (self->buf[self->pos + process->frame.len - 1] != '\0') if (self->buf[self->pos + process->frame.len - 1] != '\0')
return NULL; return NULL;
self->pos += process->frame.len; self->pos += process->frame.len;
if ((self->pos % SP_CAPTURE_ALIGN) != 0) if ((self->pos % SYSPROF_CAPTURE_ALIGN) != 0)
return NULL; return NULL;
return process; return process;
} }
GHashTable * GHashTable *
sp_capture_reader_read_jitmap (SpCaptureReader *self) sysprof_capture_reader_read_jitmap (SysprofCaptureReader *self)
{ {
g_autoptr(GHashTable) ret = NULL; g_autoptr(GHashTable) ret = NULL;
SpCaptureJitmap *jitmap; SysprofCaptureJitmap *jitmap;
guint8 *buf; guint8 *buf;
guint8 *endptr; guint8 *endptr;
guint i; guint i;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *jitmap)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *jitmap))
return NULL; return NULL;
jitmap = (SpCaptureJitmap *)(gpointer)&self->buf[self->pos]; jitmap = (SysprofCaptureJitmap *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, &jitmap->frame); sysprof_capture_reader_bswap_frame (self, &jitmap->frame);
if (jitmap->frame.type != SP_CAPTURE_FRAME_JITMAP) if (jitmap->frame.type != SYSPROF_CAPTURE_FRAME_JITMAP)
return NULL; return NULL;
if (jitmap->frame.len < sizeof *jitmap) if (jitmap->frame.len < sizeof *jitmap)
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, jitmap->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, jitmap->frame.len))
return NULL; return NULL;
jitmap = (SpCaptureJitmap *)(gpointer)&self->buf[self->pos]; jitmap = (SysprofCaptureJitmap *)(gpointer)&self->buf[self->pos];
ret = g_hash_table_new_full (NULL, NULL, NULL, g_free); ret = g_hash_table_new_full (NULL, NULL, NULL, g_free);
@ -571,7 +571,7 @@ sp_capture_reader_read_jitmap (SpCaptureReader *self)
for (i = 0; i < jitmap->n_jitmaps; i++) for (i = 0; i < jitmap->n_jitmaps; i++)
{ {
SpCaptureAddress addr; SysprofCaptureAddress addr;
const gchar *str; const gchar *str;
if (buf + sizeof addr >= endptr) if (buf + sizeof addr >= endptr)
@ -592,30 +592,30 @@ sp_capture_reader_read_jitmap (SpCaptureReader *self)
g_hash_table_insert (ret, GSIZE_TO_POINTER (addr), g_strdup (str)); g_hash_table_insert (ret, GSIZE_TO_POINTER (addr), g_strdup (str));
} }
sp_capture_reader_bswap_jitmap (self, jitmap); sysprof_capture_reader_bswap_jitmap (self, jitmap);
self->pos += jitmap->frame.len; self->pos += jitmap->frame.len;
return g_steal_pointer (&ret); return g_steal_pointer (&ret);
} }
const SpCaptureSample * const SysprofCaptureSample *
sp_capture_reader_read_sample (SpCaptureReader *self) sysprof_capture_reader_read_sample (SysprofCaptureReader *self)
{ {
SpCaptureSample *sample; SysprofCaptureSample *sample;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *sample)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *sample))
return NULL; return NULL;
sample = (SpCaptureSample *)(gpointer)&self->buf[self->pos]; sample = (SysprofCaptureSample *)(gpointer)&self->buf[self->pos];
sp_capture_reader_bswap_frame (self, &sample->frame); sysprof_capture_reader_bswap_frame (self, &sample->frame);
if (sample->frame.type != SP_CAPTURE_FRAME_SAMPLE) if (sample->frame.type != SYSPROF_CAPTURE_FRAME_SAMPLE)
return NULL; return NULL;
if (sample->frame.len < sizeof *sample) if (sample->frame.len < sizeof *sample)
@ -624,13 +624,13 @@ sp_capture_reader_read_sample (SpCaptureReader *self)
if (self->endian != G_BYTE_ORDER) if (self->endian != G_BYTE_ORDER)
sample->n_addrs = GUINT16_SWAP_LE_BE (sample->n_addrs); sample->n_addrs = GUINT16_SWAP_LE_BE (sample->n_addrs);
if (sample->frame.len < (sizeof *sample + (sizeof(SpCaptureAddress) * sample->n_addrs))) if (sample->frame.len < (sizeof *sample + (sizeof(SysprofCaptureAddress) * sample->n_addrs)))
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, sample->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, sample->frame.len))
return NULL; return NULL;
sample = (SpCaptureSample *)(gpointer)&self->buf[self->pos]; sample = (SysprofCaptureSample *)(gpointer)&self->buf[self->pos];
if (G_UNLIKELY (self->endian != G_BYTE_ORDER)) if (G_UNLIKELY (self->endian != G_BYTE_ORDER))
{ {
@ -645,21 +645,21 @@ sp_capture_reader_read_sample (SpCaptureReader *self)
return sample; return sample;
} }
const SpCaptureFrameCounterDefine * const SysprofCaptureFrameCounterDefine *
sp_capture_reader_read_counter_define (SpCaptureReader *self) sysprof_capture_reader_read_counter_define (SysprofCaptureReader *self)
{ {
SpCaptureFrameCounterDefine *def; SysprofCaptureFrameCounterDefine *def;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *def)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *def))
return NULL; return NULL;
def = (SpCaptureFrameCounterDefine *)(gpointer)&self->buf[self->pos]; def = (SysprofCaptureFrameCounterDefine *)(gpointer)&self->buf[self->pos];
if (def->frame.type != SP_CAPTURE_FRAME_CTRDEF) if (def->frame.type != SYSPROF_CAPTURE_FRAME_CTRDEF)
return NULL; return NULL;
if (def->frame.len < sizeof *def) if (def->frame.len < sizeof *def)
@ -668,13 +668,13 @@ sp_capture_reader_read_counter_define (SpCaptureReader *self)
if (G_UNLIKELY (self->endian != G_BYTE_ORDER)) if (G_UNLIKELY (self->endian != G_BYTE_ORDER))
def->n_counters = GUINT16_SWAP_LE_BE (def->n_counters); def->n_counters = GUINT16_SWAP_LE_BE (def->n_counters);
if (def->frame.len < (sizeof *def + (sizeof (SpCaptureFrameCounterDefine) * def->n_counters))) if (def->frame.len < (sizeof *def + (sizeof (SysprofCaptureFrameCounterDefine) * def->n_counters)))
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, def->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, def->frame.len))
return NULL; return NULL;
def = (SpCaptureFrameCounterDefine *)(gpointer)&self->buf[self->pos]; def = (SysprofCaptureFrameCounterDefine *)(gpointer)&self->buf[self->pos];
if (G_UNLIKELY (self->endian != G_BYTE_ORDER)) if (G_UNLIKELY (self->endian != G_BYTE_ORDER))
{ {
@ -692,21 +692,21 @@ sp_capture_reader_read_counter_define (SpCaptureReader *self)
return def; return def;
} }
const SpCaptureFrameCounterSet * const SysprofCaptureFrameCounterSet *
sp_capture_reader_read_counter_set (SpCaptureReader *self) sysprof_capture_reader_read_counter_set (SysprofCaptureReader *self)
{ {
SpCaptureFrameCounterSet *set; SysprofCaptureFrameCounterSet *set;
g_assert (self != NULL); g_assert (self != NULL);
g_assert ((self->pos % SP_CAPTURE_ALIGN) == 0); g_assert ((self->pos % SYSPROF_CAPTURE_ALIGN) == 0);
g_assert (self->pos <= self->bufsz); g_assert (self->pos <= self->bufsz);
if (!sp_capture_reader_ensure_space_for (self, sizeof *set)) if (!sysprof_capture_reader_ensure_space_for (self, sizeof *set))
return NULL; return NULL;
set = (SpCaptureFrameCounterSet *)(gpointer)&self->buf[self->pos]; set = (SysprofCaptureFrameCounterSet *)(gpointer)&self->buf[self->pos];
if (set->frame.type != SP_CAPTURE_FRAME_CTRSET) if (set->frame.type != SYSPROF_CAPTURE_FRAME_CTRSET)
return NULL; return NULL;
if (set->frame.len < sizeof *set) if (set->frame.len < sizeof *set)
@ -715,13 +715,13 @@ sp_capture_reader_read_counter_set (SpCaptureReader *self)
if (self->endian != G_BYTE_ORDER) if (self->endian != G_BYTE_ORDER)
set->n_values = GUINT16_SWAP_LE_BE (set->n_values); set->n_values = GUINT16_SWAP_LE_BE (set->n_values);
if (set->frame.len < (sizeof *set + (sizeof (SpCaptureCounterValues) * set->n_values))) if (set->frame.len < (sizeof *set + (sizeof (SysprofCaptureCounterValues) * set->n_values)))
return NULL; return NULL;
if (!sp_capture_reader_ensure_space_for (self, set->frame.len)) if (!sysprof_capture_reader_ensure_space_for (self, set->frame.len))
return NULL; return NULL;
set = (SpCaptureFrameCounterSet *)(gpointer)&self->buf[self->pos]; set = (SysprofCaptureFrameCounterSet *)(gpointer)&self->buf[self->pos];
if (G_UNLIKELY (self->endian != G_BYTE_ORDER)) if (G_UNLIKELY (self->endian != G_BYTE_ORDER))
{ {
@ -745,19 +745,19 @@ sp_capture_reader_read_counter_set (SpCaptureReader *self)
} }
gboolean gboolean
sp_capture_reader_reset (SpCaptureReader *self) sysprof_capture_reader_reset (SysprofCaptureReader *self)
{ {
g_assert (self != NULL); g_assert (self != NULL);
self->fd_off = sizeof (SpCaptureFileHeader); self->fd_off = sizeof (SysprofCaptureFileHeader);
self->pos = 0; self->pos = 0;
self->len = 0; self->len = 0;
return TRUE; return TRUE;
} }
SpCaptureReader * SysprofCaptureReader *
sp_capture_reader_ref (SpCaptureReader *self) sysprof_capture_reader_ref (SysprofCaptureReader *self)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (self->ref_count > 0); g_assert (self->ref_count > 0);
@ -768,18 +768,18 @@ sp_capture_reader_ref (SpCaptureReader *self)
} }
void void
sp_capture_reader_unref (SpCaptureReader *self) sysprof_capture_reader_unref (SysprofCaptureReader *self)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (self->ref_count > 0); g_assert (self->ref_count > 0);
if (g_atomic_int_dec_and_test (&self->ref_count)) if (g_atomic_int_dec_and_test (&self->ref_count))
sp_capture_reader_finalize (self); sysprof_capture_reader_finalize (self);
} }
gboolean gboolean
sp_capture_reader_splice (SpCaptureReader *self, sysprof_capture_reader_splice (SysprofCaptureReader *self,
SpCaptureWriter *dest, SysprofCaptureWriter *dest,
GError **error) GError **error)
{ {
g_assert (self != NULL); g_assert (self != NULL);
@ -787,7 +787,7 @@ sp_capture_reader_splice (SpCaptureReader *self,
g_assert (dest != NULL); g_assert (dest != NULL);
/* Flush before writing anything to ensure consistency */ /* Flush before writing anything to ensure consistency */
if (!sp_capture_writer_flush (dest)) if (!sysprof_capture_writer_flush (dest))
{ {
g_set_error (error, g_set_error (error,
G_FILE_ERROR, G_FILE_ERROR,
@ -802,12 +802,12 @@ sp_capture_reader_splice (SpCaptureReader *self,
*/ */
/* Perform the splice */ /* Perform the splice */
return _sp_capture_writer_splice_from_fd (dest, self->fd, error); return _sysprof_capture_writer_splice_from_fd (dest, self->fd, error);
} }
/** /**
* sp_capture_reader_save_as: * sysprof_capture_reader_save_as:
* @self: An #SpCaptureReader * @self: An #SysprofCaptureReader
* @filename: the file to save the capture as * @filename: the file to save the capture as
* @error: a location for a #GError or %NULL. * @error: a location for a #GError or %NULL.
* *
@ -817,7 +817,7 @@ sp_capture_reader_splice (SpCaptureReader *self,
* Returns: %TRUE on success; otherwise %FALSE and @error is set. * Returns: %TRUE on success; otherwise %FALSE and @error is set.
*/ */
gboolean gboolean
sp_capture_reader_save_as (SpCaptureReader *self, sysprof_capture_reader_save_as (SysprofCaptureReader *self,
const gchar *filename, const gchar *filename,
GError **error) GError **error)
{ {
@ -848,7 +848,7 @@ sp_capture_reader_save_as (SpCaptureReader *self,
{ {
gssize written; gssize written;
written = _sp_sendfile (fd, self->fd, &in_off, to_write); written = _sysprof_sendfile (fd, self->fd, &in_off, to_write);
if (written < 0) if (written < 0)
goto handle_errno; goto handle_errno;
@ -878,7 +878,7 @@ handle_errno:
} }
gint64 gint64
sp_capture_reader_get_start_time (SpCaptureReader *self) sysprof_capture_reader_get_start_time (SysprofCaptureReader *self)
{ {
g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (self != NULL, 0);
@ -889,7 +889,7 @@ sp_capture_reader_get_start_time (SpCaptureReader *self)
} }
/** /**
* sp_capture_reader_get_end_time: * sysprof_capture_reader_get_end_time:
* *
* This function will return the end time for the capture, which is the * This function will return the end time for the capture, which is the
* same as the last event added to the capture. * same as the last event added to the capture.
@ -904,7 +904,7 @@ sp_capture_reader_get_start_time (SpCaptureReader *self)
* Since: 3.22.1 * Since: 3.22.1
*/ */
gint64 gint64
sp_capture_reader_get_end_time (SpCaptureReader *self) sysprof_capture_reader_get_end_time (SysprofCaptureReader *self)
{ {
g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (self != NULL, 0);
@ -919,7 +919,7 @@ sp_capture_reader_get_end_time (SpCaptureReader *self)
} }
/** /**
* sp_capture_reader_copy: * sysprof_capture_reader_copy:
* *
* This function makes a copy of the reader. Since readers use * This function makes a copy of the reader. Since readers use
* positioned reads with pread(), this allows you to have multiple * positioned reads with pread(), this allows you to have multiple
@ -928,10 +928,10 @@ sp_capture_reader_get_end_time (SpCaptureReader *self)
* *
* Returns: (transfer full): A copy of @self with a new file-descriptor. * Returns: (transfer full): A copy of @self with a new file-descriptor.
*/ */
SpCaptureReader * SysprofCaptureReader *
sp_capture_reader_copy (SpCaptureReader *self) sysprof_capture_reader_copy (SysprofCaptureReader *self)
{ {
SpCaptureReader *copy; SysprofCaptureReader *copy;
int fd; int fd;
g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (self != NULL, NULL);
@ -939,7 +939,7 @@ sp_capture_reader_copy (SpCaptureReader *self)
if (-1 == (fd = dup (self->fd))) if (-1 == (fd = dup (self->fd)))
return NULL; return NULL;
copy = g_new0 (SpCaptureReader, 1); copy = g_new0 (SysprofCaptureReader, 1);
*copy = *self; *copy = *self;

View File

@ -0,0 +1,91 @@
/* sysprof-capture-reader.h
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This file 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 file 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 General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include "sysprof-capture-types.h"
#include "sysprof-version-macros.h"
G_BEGIN_DECLS
typedef struct _SysprofCaptureReader SysprofCaptureReader;
SYSPROF_AVAILABLE_IN_ALL
SysprofCaptureReader *sysprof_capture_reader_new (const gchar *filename,
GError **error);
SYSPROF_AVAILABLE_IN_ALL
SysprofCaptureReader *sysprof_capture_reader_new_from_fd (int fd,
GError **error);
SYSPROF_AVAILABLE_IN_ALL
SysprofCaptureReader *sysprof_capture_reader_copy (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
SysprofCaptureReader *sysprof_capture_reader_ref (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
void sysprof_capture_reader_unref (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const gchar *sysprof_capture_reader_get_filename (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const gchar *sysprof_capture_reader_get_time (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gint64 sysprof_capture_reader_get_start_time (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gint64 sysprof_capture_reader_get_end_time (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_capture_reader_skip (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_capture_reader_peek_type (SysprofCaptureReader *self,
SysprofCaptureFrameType *type);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_capture_reader_peek_frame (SysprofCaptureReader *self,
SysprofCaptureFrame *frame);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureMap *sysprof_capture_reader_read_map (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureMark *sysprof_capture_reader_read_mark (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureExit *sysprof_capture_reader_read_exit (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureFork *sysprof_capture_reader_read_fork (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureTimestamp *sysprof_capture_reader_read_timestamp (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureProcess *sysprof_capture_reader_read_process (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureSample *sysprof_capture_reader_read_sample (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
GHashTable *sysprof_capture_reader_read_jitmap (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureFrameCounterDefine *sysprof_capture_reader_read_counter_define (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
const SysprofCaptureFrameCounterSet *sysprof_capture_reader_read_counter_set (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_capture_reader_reset (SysprofCaptureReader *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_capture_reader_splice (SysprofCaptureReader *self,
SysprofCaptureWriter *dest,
GError **error);
SYSPROF_AVAILABLE_IN_ALL
gboolean sysprof_capture_reader_save_as (SysprofCaptureReader *self,
const gchar *filename,
GError **error);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureReader, sysprof_capture_reader_unref)
G_END_DECLS

View File

@ -0,0 +1,256 @@
/* sysprof-capture-types.h
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This file 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 file 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 General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include <glib.h>
#include "sysprof-clock.h"
G_BEGIN_DECLS
#define SYSPROF_CAPTURE_MAGIC (GUINT32_TO_LE(0xFDCA975E))
#define SYSPROF_CAPTURE_ALIGN (sizeof(SysprofCaptureAddress))
#if defined(_MSC_VER)
# define SYSPROF_ALIGNED_BEGIN(_N) __declspec(align (_N))
# define SYSPROF_ALIGNED_END(_N)
#else
# define SYSPROF_ALIGNED_BEGIN(_N)
# define SYSPROF_ALIGNED_END(_N) __attribute__((aligned ((_N))))
#endif
#if GLIB_SIZEOF_VOID_P == 8
# define SYSPROF_CAPTURE_JITMAP_MARK G_GUINT64_CONSTANT(0xE000000000000000)
# define SYSPROF_CAPTURE_ADDRESS_FORMAT "0x%016lx"
#elif GLIB_SIZEOF_VOID_P == 4
# define SYSPROF_CAPTURE_JITMAP_MARK G_GUINT64_CONSTANT(0xE0000000)
# define SYSPROF_CAPTURE_ADDRESS_FORMAT "0x%016llx"
#else
#error Unknown GLIB_SIZEOF_VOID_P
#endif
#define SYSPROF_CAPTURE_CURRENT_TIME (sysprof_clock_get_current_time())
#define SYSPROF_CAPTURE_COUNTER_INT64 0
#define SYSPROF_CAPTURE_COUNTER_DOUBLE 1
typedef struct _SysprofCaptureReader SysprofCaptureReader;
typedef struct _SysprofCaptureWriter SysprofCaptureWriter;
typedef struct _SysprofCaptureCursor SysprofCaptureCursor;
typedef struct _SysprofCaptureCondition SysprofCaptureCondition;
typedef guint64 SysprofCaptureAddress;
typedef union
{
gint64 v64;
gdouble vdbl;
} SysprofCaptureCounterValue;
typedef enum
{
SYSPROF_CAPTURE_FRAME_TIMESTAMP = 1,
SYSPROF_CAPTURE_FRAME_SAMPLE = 2,
SYSPROF_CAPTURE_FRAME_MAP = 3,
SYSPROF_CAPTURE_FRAME_PROCESS = 4,
SYSPROF_CAPTURE_FRAME_FORK = 5,
SYSPROF_CAPTURE_FRAME_EXIT = 6,
SYSPROF_CAPTURE_FRAME_JITMAP = 7,
SYSPROF_CAPTURE_FRAME_CTRDEF = 8,
SYSPROF_CAPTURE_FRAME_CTRSET = 9,
SYSPROF_CAPTURE_FRAME_MARK = 10,
} SysprofCaptureFrameType;
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
guint32 magic;
guint32 version : 8;
guint32 little_endian : 1;
guint32 padding : 23;
gchar capture_time[64];
gint64 time;
gint64 end_time;
gchar suffix[168];
} SysprofCaptureFileHeader
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
guint16 len;
gint16 cpu;
gint32 pid;
gint64 time;
guint32 type : 8;
guint32 padding1 : 24;
guint32 padding2;
guint8 data[0];
} SysprofCaptureFrame
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
guint64 start;
guint64 end;
guint64 offset;
guint64 inode;
gchar filename[0];
} SysprofCaptureMap
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
guint32 n_jitmaps;
guint8 data[0];
} SysprofCaptureJitmap
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
gchar cmdline[0];
} SysprofCaptureProcess
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
guint32 n_addrs : 16;
guint32 padding1 : 16;
gint32 tid;
SysprofCaptureAddress addrs[0];
} SysprofCaptureSample
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
gint32 child_pid;
} SysprofCaptureFork
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
} SysprofCaptureExit
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
} SysprofCaptureTimestamp
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
gchar category[32];
gchar name[32];
gchar description[52];
guint32 id : 24;
guint32 type : 8;
SysprofCaptureCounterValue value;
} SysprofCaptureCounter
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
guint32 n_counters : 16;
guint32 padding1 : 16;
guint32 padding2;
SysprofCaptureCounter counters[0];
} SysprofCaptureFrameCounterDefine
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
/*
* 96 bytes might seem a bit odd, but the counter frame header is 32
* bytes. So this makes a nice 2-cacheline aligned size which is
* useful when the number of counters is rather small.
*/
guint32 ids[8];
SysprofCaptureCounterValue values[8];
} SysprofCaptureCounterValues
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
guint32 n_values : 16;
guint32 padding1 : 16;
guint32 padding2;
SysprofCaptureCounterValues values[0];
} SysprofCaptureFrameCounterSet
SYSPROF_ALIGNED_END(1);
SYSPROF_ALIGNED_BEGIN(1)
typedef struct
{
SysprofCaptureFrame frame;
gint64 duration;
gchar group[24];
gchar name[40];
gchar message[0];
} SysprofCaptureMark
SYSPROF_ALIGNED_END(1);
G_STATIC_ASSERT (sizeof (SysprofCaptureFileHeader) == 256);
G_STATIC_ASSERT (sizeof (SysprofCaptureFrame) == 24);
G_STATIC_ASSERT (sizeof (SysprofCaptureMap) == 56);
G_STATIC_ASSERT (sizeof (SysprofCaptureJitmap) == 28);
G_STATIC_ASSERT (sizeof (SysprofCaptureProcess) == 24);
G_STATIC_ASSERT (sizeof (SysprofCaptureSample) == 32);
G_STATIC_ASSERT (sizeof (SysprofCaptureFork) == 28);
G_STATIC_ASSERT (sizeof (SysprofCaptureExit) == 24);
G_STATIC_ASSERT (sizeof (SysprofCaptureTimestamp) == 24);
G_STATIC_ASSERT (sizeof (SysprofCaptureCounter) == 128);
G_STATIC_ASSERT (sizeof (SysprofCaptureCounterValues) == 96);
G_STATIC_ASSERT (sizeof (SysprofCaptureFrameCounterDefine) == 32);
G_STATIC_ASSERT (sizeof (SysprofCaptureFrameCounterSet) == 32);
G_STATIC_ASSERT (sizeof (SysprofCaptureMark) == 96);
static inline gint
sysprof_capture_address_compare (SysprofCaptureAddress a,
SysprofCaptureAddress b)
{
if (a < b)
return -1;
if (a > b)
return 1;
else
return 0;
}
G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-capture-util-private.h /* sysprof-capture-util-private.h
* *
* Copyright 2019 Christian Hergert <chergert@redhat.com> * Copyright 2019 Christian Hergert <chergert@redhat.com>
* *
@ -29,27 +29,27 @@
#include <unistd.h> #include <unistd.h>
#ifdef __linux__ #ifdef __linux__
# define _sp_getpagesize() getpagesize() # define _sysprof_getpagesize() getpagesize()
# define _sp_pread(a,b,c,d) pread(a,b,c,d) # define _sysprof_pread(a,b,c,d) pread(a,b,c,d)
# define _sp_pwrite(a,b,c,d) pwrite(a,b,c,d) # define _sysprof_pwrite(a,b,c,d) pwrite(a,b,c,d)
# define _sp_write(a,b,c) write(a,b,c) # define _sysprof_write(a,b,c) write(a,b,c)
# define _sp_getpid() getpid() # define _sysprof_getpid() getpid()
# define _sp_sendfile(a,b,c,d) sendfile(a,b,c,d) # define _sysprof_sendfile(a,b,c,d) sendfile(a,b,c,d)
#else #else
size_t _sp_getpagesize (void); size_t _sysprof_getpagesize (void);
ssize_t _sp_pread (int fd, ssize_t _sysprof_pread (int fd,
void *buf, void *buf,
size_t count, size_t count,
off_t offset); off_t offset);
ssize_t _sp_pwrite (int fd, ssize_t _sysprof_pwrite (int fd,
const void *buf, const void *buf,
size_t count, size_t count,
off_t offset); off_t offset);
ssize_t _sp_write (int fd, ssize_t _sysprof_write (int fd,
const void *buf, const void *buf,
size_t count); size_t count);
gint32 _sp_getpid (void); gint32 _sysprof_getpid (void);
ssize_t _sp_sendfile (int out_fd, ssize_t _sysprof_sendfile (int out_fd,
int in_fd, int in_fd,
off_t *offset, off_t *offset,
size_t count); size_t count);

View File

@ -1,4 +1,4 @@
/* sp-capture-util.c /* sysprof-capture-util.c
* *
* Copyright 2019 Christian Hergert <chergert@redhat.com> * Copyright 2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-capture-util" #define G_LOG_DOMAIN "sysprof-capture-util"
#include "config.h" #include "config.h"
@ -31,14 +31,14 @@
# include <windows.h> # include <windows.h>
#endif #endif
#include "sp-capture-util-private.h" #include "sysprof-capture-util-private.h"
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
static G_LOCK_DEFINE (_sp_io_sync); static G_LOCK_DEFINE (_sysprof_io_sync);
#endif #endif
size_t size_t
(_sp_getpagesize) (void) (_sysprof_getpagesize) (void)
{ {
static size_t pgsz = 0; static size_t pgsz = 0;
@ -57,7 +57,7 @@ size_t
} }
ssize_t ssize_t
(_sp_pread) (int fd, (_sysprof_pread) (int fd,
void *buf, void *buf,
size_t count, size_t count,
off_t offset) off_t offset)
@ -65,11 +65,11 @@ ssize_t
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
ssize_t ret = -1; ssize_t ret = -1;
G_LOCK (_sp_io_sync); G_LOCK (_sysprof_io_sync);
errno = 0; errno = 0;
if (lseek (fd, offset, SEEK_SET) != -1) if (lseek (fd, offset, SEEK_SET) != -1)
ret = read (fd, buf, count); ret = read (fd, buf, count);
G_UNLOCK (_sp_io_sync); G_UNLOCK (_sysprof_io_sync);
return ret; return ret;
#else #else
@ -79,7 +79,7 @@ ssize_t
} }
ssize_t ssize_t
(_sp_pwrite) (int fd, (_sysprof_pwrite) (int fd,
const void *buf, const void *buf,
size_t count, size_t count,
off_t offset) off_t offset)
@ -87,11 +87,11 @@ ssize_t
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
ssize_t ret = -1; ssize_t ret = -1;
G_LOCK (_sp_io_sync); G_LOCK (_sysprof_io_sync);
errno = 0; errno = 0;
if (lseek (fd, offset, SEEK_SET) != -1) if (lseek (fd, offset, SEEK_SET) != -1)
ret = write (fd, buf, count); ret = write (fd, buf, count);
G_UNLOCK (_sp_io_sync); G_UNLOCK (_sysprof_io_sync);
return ret; return ret;
#else #else
@ -101,17 +101,17 @@ ssize_t
} }
ssize_t ssize_t
(_sp_write) (int fd, (_sysprof_write) (int fd,
const void *buf, const void *buf,
size_t count) size_t count)
{ {
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
ssize_t ret = -1; ssize_t ret = -1;
G_LOCK (_sp_io_sync); G_LOCK (_sysprof_io_sync);
errno = 0; errno = 0;
ret = write (fd, buf, count); ret = write (fd, buf, count);
G_UNLOCK (_sp_io_sync); G_UNLOCK (_sysprof_io_sync);
return ret; return ret;
#else #else
@ -121,7 +121,7 @@ ssize_t
} }
gint32 gint32
(_sp_getpid) (void) (_sysprof_getpid) (void)
{ {
#ifdef G_OS_WIN32 #ifdef G_OS_WIN32
return _getpid (); return _getpid ();
@ -131,7 +131,7 @@ gint32
} }
ssize_t ssize_t
(_sp_sendfile) (int out_fd, (_sysprof_sendfile) (int out_fd,
int in_fd, int in_fd,
off_t *offset, off_t *offset,
size_t count) size_t count)
@ -163,7 +163,7 @@ ssize_t
to_read = count; to_read = count;
errno = 0; errno = 0;
n_read = _sp_pread (in_fd, buf, to_read, rpos); n_read = _sysprof_pread (in_fd, buf, to_read, rpos);
if (n_read <= 0) if (n_read <= 0)
return -1; return -1;

View File

@ -1,4 +1,4 @@
/* sp-capture-writer.h /* sysprof-capture-writer.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,17 +20,17 @@
#pragma once #pragma once
#include "sp-capture-types.h" #include "sysprof-capture-types.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct _SpCaptureWriter SpCaptureWriter; typedef struct _SysprofCaptureWriter SysprofCaptureWriter;
typedef struct typedef struct
{ {
/* /*
* The number of frames indexed by SpCaptureFrameType * The number of frames indexed by SysprofCaptureFrameType
*/ */
gsize frame_count[16]; gsize frame_count[16];
@ -38,25 +38,25 @@ typedef struct
* Padding for future expansion. * Padding for future expansion.
*/ */
gsize padding[48]; gsize padding[48];
} SpCaptureStat; } SysprofCaptureStat;
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureWriter *sp_capture_writer_new_from_env (gsize buffer_size); SysprofCaptureWriter *sysprof_capture_writer_new_from_env (gsize buffer_size);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureWriter *sp_capture_writer_new (const gchar *filename, SysprofCaptureWriter *sysprof_capture_writer_new (const gchar *filename,
gsize buffer_size); gsize buffer_size);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureWriter *sp_capture_writer_new_from_fd (int fd, SysprofCaptureWriter *sysprof_capture_writer_new_from_fd (int fd,
gsize buffer_size); gsize buffer_size);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureWriter *sp_capture_writer_ref (SpCaptureWriter *self); SysprofCaptureWriter *sysprof_capture_writer_ref (SysprofCaptureWriter *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_writer_unref (SpCaptureWriter *self); void sysprof_capture_writer_unref (SysprofCaptureWriter *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_capture_writer_stat (SpCaptureWriter *self, void sysprof_capture_writer_stat (SysprofCaptureWriter *self,
SpCaptureStat *stat); SysprofCaptureStat *stat);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_map (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_map (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
@ -66,7 +66,7 @@ gboolean sp_capture_writer_add_map (SpCaptureWriter *
guint64 inode, guint64 inode,
const gchar *filename); const gchar *filename);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_mark (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_mark (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
@ -75,78 +75,78 @@ gboolean sp_capture_writer_add_mark (SpCaptureWriter *
const gchar *name, const gchar *name,
const gchar *message); const gchar *message);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
guint64 sp_capture_writer_add_jitmap (SpCaptureWriter *self, guint64 sysprof_capture_writer_add_jitmap (SysprofCaptureWriter *self,
const gchar *name); const gchar *name);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_process (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_process (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
const gchar *cmdline); const gchar *cmdline);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_sample (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_sample (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
gint32 tid, gint32 tid,
const SpCaptureAddress *addrs, const SysprofCaptureAddress *addrs,
guint n_addrs); guint n_addrs);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_fork (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_fork (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
gint32 child_pid); gint32 child_pid);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_exit (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_exit (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid); gint32 pid);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_add_timestamp (SpCaptureWriter *self, gboolean sysprof_capture_writer_add_timestamp (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid); gint32 pid);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_define_counters (SpCaptureWriter *self, gboolean sysprof_capture_writer_define_counters (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
const SpCaptureCounter *counters, const SysprofCaptureCounter *counters,
guint n_counters); guint n_counters);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_set_counters (SpCaptureWriter *self, gboolean sysprof_capture_writer_set_counters (SysprofCaptureWriter *self,
gint64 time, gint64 time,
gint cpu, gint cpu,
gint32 pid, gint32 pid,
const guint *counters_ids, const guint *counters_ids,
const SpCaptureCounterValue *values, const SysprofCaptureCounterValue *values,
guint n_counters); guint n_counters);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_flush (SpCaptureWriter *self); gboolean sysprof_capture_writer_flush (SysprofCaptureWriter *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_save_as (SpCaptureWriter *self, gboolean sysprof_capture_writer_save_as (SysprofCaptureWriter *self,
const gchar *filename, const gchar *filename,
GError **error); GError **error);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
guint sp_capture_writer_request_counter (SpCaptureWriter *self, guint sysprof_capture_writer_request_counter (SysprofCaptureWriter *self,
guint n_counters); guint n_counters);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_capture_writer_create_reader (SpCaptureWriter *self, SysprofCaptureReader *sysprof_capture_writer_create_reader (SysprofCaptureWriter *self,
GError **error); GError **error);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_capture_writer_splice (SpCaptureWriter *self, gboolean sysprof_capture_writer_splice (SysprofCaptureWriter *self,
SpCaptureWriter *dest, SysprofCaptureWriter *dest,
GError **error); GError **error);
G_GNUC_INTERNAL G_GNUC_INTERNAL
gboolean _sp_capture_writer_splice_from_fd (SpCaptureWriter *self, gboolean _sysprof_capture_writer_splice_from_fd (SysprofCaptureWriter *self,
int fd, int fd,
GError **error) G_GNUC_INTERNAL; GError **error) G_GNUC_INTERNAL;
G_GNUC_INTERNAL G_GNUC_INTERNAL
gboolean _sp_capture_writer_set_time_range (SpCaptureWriter *self, gboolean _sysprof_capture_writer_set_time_range (SysprofCaptureWriter *self,
gint64 start_time, gint64 start_time,
gint64 end_time) G_GNUC_INTERNAL; gint64 end_time) G_GNUC_INTERNAL;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpCaptureWriter, sp_capture_writer_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCaptureWriter, sysprof_capture_writer_unref)
G_END_DECLS G_END_DECLS

View File

@ -26,12 +26,12 @@ G_BEGIN_DECLS
#define SYSPROF_CAPTURE_INSIDE #define SYSPROF_CAPTURE_INSIDE
# include "sp-address.h" # include "sysprof-address.h"
# include "sp-capture-condition.h" # include "sysprof-capture-condition.h"
# include "sp-capture-cursor.h" # include "sysprof-capture-cursor.h"
# include "sp-capture-reader.h" # include "sysprof-capture-reader.h"
# include "sp-capture-writer.h" # include "sysprof-capture-writer.h"
# include "sp-clock.h" # include "sysprof-clock.h"
# include "sysprof-version.h" # include "sysprof-version.h"
# include "sysprof-version-macros.h" # include "sysprof-version-macros.h"

View File

@ -1,4 +1,4 @@
/* sp-clock.c /* sysprof-clock.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,16 +18,16 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-clock" #define G_LOG_DOMAIN "sysprof-clock"
#include "config.h" #include "config.h"
#include "sp-clock.h" #include "sysprof-clock.h"
gint sp_clock = -1; gint sysprof_clock = -1;
void void
sp_clock_init (void) sysprof_clock_init (void)
{ {
static const gint clock_ids[] = { static const gint clock_ids[] = {
CLOCK_MONOTONIC, CLOCK_MONOTONIC,
@ -39,7 +39,7 @@ sp_clock_init (void)
CLOCK_REALTIME, CLOCK_REALTIME,
}; };
if (sp_clock != -1) if (sysprof_clock != -1)
return; return;
for (guint i = 0; i < G_N_ELEMENTS (clock_ids); i++) for (guint i = 0; i < G_N_ELEMENTS (clock_ids); i++)
@ -49,7 +49,7 @@ sp_clock_init (void)
if (0 == clock_gettime (clock_id, &ts)) if (0 == clock_gettime (clock_id, &ts))
{ {
sp_clock = clock_id; sysprof_clock = clock_id;
return; return;
} }
} }

View File

@ -1,4 +1,4 @@
/* sp-clock.h /* sysprof-clock.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -27,18 +27,18 @@
G_BEGIN_DECLS G_BEGIN_DECLS
typedef gint SpClock; typedef gint SysprofClock;
typedef gint64 SpTimeStamp; typedef gint64 SysprofTimeStamp;
typedef gint32 SpTimeSpan; typedef gint32 SysprofTimeSysprofan;
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpClock sp_clock; SysprofClock sysprof_clock;
static inline SpTimeStamp static inline SysprofTimeStamp
sp_clock_get_current_time (void) sysprof_clock_get_current_time (void)
{ {
struct timespec ts; struct timespec ts;
SpClock clock = sp_clock; SysprofClock clock = sysprof_clock;
if G_UNLIKELY (clock == -1) if G_UNLIKELY (clock == -1)
clock = CLOCK_MONOTONIC; clock = CLOCK_MONOTONIC;
@ -47,13 +47,13 @@ sp_clock_get_current_time (void)
return (ts.tv_sec * G_GINT64_CONSTANT (1000000000)) + ts.tv_nsec; return (ts.tv_sec * G_GINT64_CONSTANT (1000000000)) + ts.tv_nsec;
} }
static inline SpTimeSpan static inline SysprofTimeSysprofan
sp_clock_get_relative_time (SpTimeStamp epoch) sysprof_clock_get_relative_time (SysprofTimeStamp epoch)
{ {
return sp_clock_get_current_time () - epoch; return sysprof_clock_get_current_time () - epoch;
} }
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_clock_init (void); void sysprof_clock_init (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-platform.c /* sysprof-platform.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-platform" #define G_LOG_DOMAIN "sysprof-platform"
#include "config.h" #include "config.h"
@ -27,10 +27,10 @@
#include <sys/syscall.h> #include <sys/syscall.h>
#include <unistd.h> #include <unistd.h>
#include "sp-platform.h" #include "sysprof-platform.h"
/** /**
* sp_memfd_create: * sysprof_memfd_create:
* @name: (nullable): A descriptive name for the memfd or %NULL * @name: (nullable): A descriptive name for the memfd or %NULL
* *
* Creates a new memfd using the memfd_create syscall if available. * Creates a new memfd using the memfd_create syscall if available.
@ -40,7 +40,7 @@
* Returns: An fd if successful; otherwise -1 and errno is set. * Returns: An fd if successful; otherwise -1 and errno is set.
*/ */
int int
sp_memfd_create (const gchar *name) sysprof_memfd_create (const gchar *name)
{ {
#ifdef __NR_memfd_create #ifdef __NR_memfd_create
if (name == NULL) if (name == NULL)

View File

@ -1,4 +1,4 @@
/* sp-platform.h /* sysprof-platform.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -25,6 +25,6 @@
G_BEGIN_DECLS G_BEGIN_DECLS
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
int sp_memfd_create (const gchar *desc); int sysprof_memfd_create (const gchar *desc);
G_END_DECLS G_END_DECLS

View File

@ -1,49 +1,49 @@
libsysprof_ui_public_sources = [ libsysprof_ui_public_sources = [
'sp-callgraph-view.c', 'sysprof-callgraph-view.c',
'sp-color-cycle.c', 'sysprof-color-cycle.c',
'sp-cpu-visualizer-row.c', 'sysprof-cpu-visualizer-row.c',
'sp-empty-state-view.c', 'sysprof-empty-state-view.c',
'sp-failed-state-view.c', 'sysprof-failed-state-view.c',
'sp-line-visualizer-row.c', 'sysprof-line-visualizer-row.c',
'sp-mark-visualizer-row.c', 'sysprof-mark-visualizer-row.c',
'sp-model-filter.c', 'sysprof-model-filter.c',
'sp-multi-paned.c', 'sysprof-multi-paned.c',
'sp-process-model-row.c', 'sysprof-process-model-row.c',
'sp-profiler-menu-button.c', 'sysprof-profiler-menu-button.c',
'sp-recording-state-view.c', 'sysprof-recording-state-view.c',
'sp-visualizer-list.c', 'sysprof-visualizer-list.c',
'sp-visualizer-row.c', 'sysprof-visualizer-row.c',
'sp-visualizer-ticks.c', 'sysprof-visualizer-ticks.c',
'sp-visualizer-view.c', 'sysprof-visualizer-view.c',
'sp-zoom-manager.c', 'sysprof-zoom-manager.c',
] ]
libsysprof_ui_private_sources = [ libsysprof_ui_private_sources = [
'pointcache.c', 'pointcache.c',
'rectangles.c', 'rectangles.c',
'sp-cell-renderer-percent.c', 'sysprof-cell-renderer-percent.c',
'sp-theme-manager.c', 'sysprof-theme-manager.c',
'../stackstash.c', '../stackstash.c',
] ]
libsysprof_ui_public_headers = [ libsysprof_ui_public_headers = [
'sp-callgraph-view.h', 'sysprof-callgraph-view.h',
'sp-cell-renderer-percent.h', 'sysprof-cell-renderer-percent.h',
'sp-cpu-visualizer-row.h', 'sysprof-cpu-visualizer-row.h',
'sp-empty-state-view.h', 'sysprof-empty-state-view.h',
'sp-failed-state-view.h', 'sysprof-failed-state-view.h',
'sp-line-visualizer-row.h', 'sysprof-line-visualizer-row.h',
'sp-mark-visualizer-row.h', 'sysprof-mark-visualizer-row.h',
'sp-model-filter.h', 'sysprof-model-filter.h',
'sp-multi-paned.h', 'sysprof-multi-paned.h',
'sp-process-model-row.h', 'sysprof-process-model-row.h',
'sp-profiler-menu-button.h', 'sysprof-profiler-menu-button.h',
'sp-recording-state-view.h', 'sysprof-recording-state-view.h',
'sp-visualizer-list.h', 'sysprof-visualizer-list.h',
'sp-visualizer-row.h', 'sysprof-visualizer-row.h',
'sp-visualizer-ticks.h', 'sysprof-visualizer-ticks.h',
'sp-visualizer-view.h', 'sysprof-visualizer-view.h',
'sp-zoom-manager.h', 'sysprof-zoom-manager.h',
'sysprof-ui.h', 'sysprof-ui.h',
] ]

View File

@ -19,8 +19,8 @@
*/ */
#include "rectangles.h" #include "rectangles.h"
#include "sp-color-cycle.h" #include "sysprof-color-cycle.h"
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
typedef struct typedef struct
{ {
@ -37,7 +37,7 @@ struct _Rectangles
GArray *rectangles; GArray *rectangles;
GHashTable *y_indexes; GHashTable *y_indexes;
GHashTable *colors; GHashTable *colors;
SpColorCycle *cycle; SysprofColorCycle *cycle;
gint64 begin_time; gint64 begin_time;
gint64 end_time; gint64 end_time;
guint sorted : 1; guint sorted : 1;
@ -54,7 +54,7 @@ rectangles_new (gint64 begin_time,
self->rectangles = g_array_new (FALSE, FALSE, sizeof (Rectangle)); self->rectangles = g_array_new (FALSE, FALSE, sizeof (Rectangle));
self->y_indexes = g_hash_table_new (g_str_hash, g_str_equal); self->y_indexes = g_hash_table_new (g_str_hash, g_str_equal);
self->colors = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); self->colors = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free);
self->cycle = sp_color_cycle_new (); self->cycle = sysprof_color_cycle_new ();
self->begin_time = begin_time; self->begin_time = begin_time;
self->end_time = end_time; self->end_time = end_time;
self->sorted = FALSE; self->sorted = FALSE;
@ -97,7 +97,7 @@ rectangles_free (Rectangles *self)
g_array_unref (self->rectangles); g_array_unref (self->rectangles);
g_hash_table_unref (self->colors); g_hash_table_unref (self->colors);
g_hash_table_unref (self->y_indexes); g_hash_table_unref (self->y_indexes);
sp_color_cycle_unref (self->cycle); sysprof_color_cycle_unref (self->cycle);
g_slice_free (Rectangles, self); g_slice_free (Rectangles, self);
} }
@ -137,7 +137,7 @@ rectangles_sort (Rectangles *self)
{ {
GdkRGBA rgba; GdkRGBA rgba;
sp_color_cycle_next (self->cycle, &rgba); sysprof_color_cycle_next (self->cycle, &rgba);
g_hash_table_insert (self->y_indexes, (gchar *)rect->name, GUINT_TO_POINTER (++sequence)); g_hash_table_insert (self->y_indexes, (gchar *)rect->name, GUINT_TO_POINTER (++sequence));
g_hash_table_insert (self->colors, (gchar *)rect->name, g_memdup (&rgba, sizeof rgba)); g_hash_table_insert (self->colors, (gchar *)rect->name, g_memdup (&rgba, sizeof rgba));
} }
@ -156,7 +156,7 @@ rectangles_draw (Rectangles *self,
guint n_rows; guint n_rows;
g_assert (self != NULL); g_assert (self != NULL);
g_assert (SP_IS_VISUALIZER_ROW (row)); g_assert (SYSPROF_IS_VISUALIZER_ROW (row));
g_assert (cr != NULL); g_assert (cr != NULL);
if (!self->sorted) if (!self->sorted)
@ -173,8 +173,8 @@ rectangles_draw (Rectangles *self,
{ {
Rectangle *rect = &g_array_index (self->rectangles, Rectangle, i); Rectangle *rect = &g_array_index (self->rectangles, Rectangle, i);
guint y_index = GPOINTER_TO_UINT (g_hash_table_lookup (self->y_indexes, rect->name)); guint y_index = GPOINTER_TO_UINT (g_hash_table_lookup (self->y_indexes, rect->name));
SpVisualizerRowRelativePoint in_points[2]; SysprofVisualizerRowRelativePoint in_points[2];
SpVisualizerRowAbsolutePoint out_points[2]; SysprofVisualizerRowAbsolutePoint out_points[2];
GdkRectangle r; GdkRectangle r;
GdkRGBA *rgba; GdkRGBA *rgba;
@ -186,9 +186,9 @@ rectangles_draw (Rectangles *self,
in_points[1].x = (rect->end - self->begin_time) / range; in_points[1].x = (rect->end - self->begin_time) / range;
in_points[1].y = 0; in_points[1].y = 0;
sp_visualizer_row_translate_points (SP_VISUALIZER_ROW (row), sysprof_visualizer_row_translate_points (SYSPROF_VISUALIZER_ROW (row),
in_points, G_N_ELEMENTS (in_points), in_points, G_N_ELEMENTS (in_points),
out_points, G_N_ELEMENTS (out_points)); out_points, G_N_ELEMENTS (out_points));
r.height = alloc.height / (gdouble)n_rows; r.height = alloc.height / (gdouble)n_rows;
r.x = out_points[0].x; r.x = out_points[0].x;

View File

@ -1,62 +0,0 @@
/* sp-cell-renderer-percent.h
*
* Copyright 2016-2019 Christian Hergert <christian@hergert.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include <gtk/gtk.h>
#include "sysprof-version-macros.h"
G_BEGIN_DECLS
#define SP_TYPE_CELL_RENDERER_PERCENT (sp_cell_renderer_percent_get_type())
#define SP_CELL_RENDERER_PERCENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CELL_RENDERER_PERCENT, SpCellRendererPercent))
#define SP_CELL_RENDERER_PERCENT_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CELL_RENDERER_PERCENT, SpCellRendererPercent const))
#define SP_CELL_RENDERER_PERCENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_CELL_RENDERER_PERCENT, SpCellRendererPercentClass))
#define SP_IS_CELL_RENDERER_PERCENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CELL_RENDERER_PERCENT))
#define SP_IS_CELL_RENDERER_PERCENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_CELL_RENDERER_PERCENT))
#define SP_CELL_RENDERER_PERCENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SP_TYPE_CELL_RENDERER_PERCENT, SpCellRendererPercentClass))
typedef struct _SpCellRendererPercent SpCellRendererPercent;
typedef struct _SpCellRendererPercentClass SpCellRendererPercentClass;
struct _SpCellRendererPercent
{
GtkCellRendererText parent;
};
struct _SpCellRendererPercentClass
{
GtkCellRendererTextClass parent_class;
gpointer padding[4];
};
SYSPROF_AVAILABLE_IN_ALL
GType sp_cell_renderer_percent_get_type (void);
SYSPROF_AVAILABLE_IN_ALL
GtkCellRenderer *sp_cell_renderer_percent_new (void);
SYSPROF_AVAILABLE_IN_ALL
gdouble sp_cell_renderer_percent_get_percent (SpCellRendererPercent *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_cell_renderer_percent_set_percent (SpCellRendererPercent *self,
gdouble percent);
G_END_DECLS

View File

@ -1,173 +0,0 @@
/* sp-cpu-visualizer-row.c
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#define G_LOG_DOMAIN "sp-cpu-visualizer-row"
#include "config.h"
#include "sp-capture-condition.h"
#include "sp-capture-cursor.h"
#include "sp-color-cycle.h"
#include "sp-cpu-visualizer-row.h"
struct _SpCpuVisualizerRow
{
SpLineVisualizerRow parent_instance;
SpColorCycle *colors;
};
G_DEFINE_TYPE (SpCpuVisualizerRow, sp_cpu_visualizer_row, SP_TYPE_LINE_VISUALIZER_ROW)
static gboolean
sp_cpu_visualizer_counter_found (const SpCaptureFrame *frame,
gpointer user_data)
{
const SpCaptureFrameCounterDefine *def = (SpCaptureFrameCounterDefine *)frame;
GArray *counters = user_data;
gboolean found = FALSE;
g_assert (frame->type == SP_CAPTURE_FRAME_CTRDEF);
/*
* In practice, all the CPU counters are defined at once, so we can avoid
* walking the rest of the capture by returning after we find our CTRDEF.
*/
for (guint i = 0; i < def->n_counters; i++)
{
if (g_str_equal (def->counters[i].category, "CPU Percent"))
{
guint id = def->counters[i].id;
g_array_append_val (counters, id);
found = TRUE;
}
}
return !found;
}
static void
sp_cpu_visualizer_row_discover_counters (GTask *task,
gpointer source_object,
gpointer task_data,
GCancellable *canellable)
{
const SpCaptureFrameType types[] = { SP_CAPTURE_FRAME_CTRDEF };
SpCaptureReader *reader = task_data;
g_autoptr(SpCaptureCursor) cursor = NULL;
g_autoptr(GArray) counters = NULL;
g_assert (G_IS_TASK (task));
g_assert (SP_IS_CPU_VISUALIZER_ROW (source_object));
g_assert (reader != NULL);
counters = g_array_new (FALSE, FALSE, sizeof (guint));
cursor = sp_capture_cursor_new (reader);
sp_capture_cursor_add_condition (cursor, sp_capture_condition_new_where_type_in (G_N_ELEMENTS (types), types));
sp_capture_cursor_foreach (cursor, sp_cpu_visualizer_counter_found, counters);
g_task_return_pointer (task, g_steal_pointer (&counters), (GDestroyNotify)g_array_unref);
}
static void
complete_counters (GObject *object,
GAsyncResult *result,
gpointer user_data)
{
SpCpuVisualizerRow *self = (SpCpuVisualizerRow *)object;
g_autoptr(GArray) counters = NULL;
g_assert (SP_IS_CPU_VISUALIZER_ROW (self));
g_assert (G_IS_TASK (result));
counters = g_task_propagate_pointer (G_TASK (result), NULL);
if (counters != NULL)
{
for (guint i = 0; i < counters->len; i++)
{
guint counter_id = g_array_index (counters, guint, i);
GdkRGBA color;
sp_color_cycle_next (self->colors, &color);
sp_line_visualizer_row_add_counter (SP_LINE_VISUALIZER_ROW (self), counter_id, &color);
}
}
/* Hide ourself if we failed to locate counters */
gtk_widget_set_visible (GTK_WIDGET (self), counters != NULL && counters->len > 0);
}
static void
sp_cpu_visualizer_row_set_reader (SpVisualizerRow *row,
SpCaptureReader *reader)
{
SpCpuVisualizerRow *self = (SpCpuVisualizerRow *)row;
g_autoptr(GTask) task = NULL;
g_assert (SP_IS_CPU_VISUALIZER_ROW (row));
sp_color_cycle_reset (self->colors);
sp_line_visualizer_row_clear (SP_LINE_VISUALIZER_ROW (row));
SP_VISUALIZER_ROW_CLASS (sp_cpu_visualizer_row_parent_class)->set_reader (row, reader);
if (reader != NULL)
{
task = g_task_new (self, NULL, complete_counters, NULL);
g_task_set_source_tag (task, sp_cpu_visualizer_row_set_reader);
g_task_set_task_data (task, sp_capture_reader_copy (reader),
(GDestroyNotify)sp_capture_reader_unref);
g_task_run_in_thread (task, sp_cpu_visualizer_row_discover_counters);
}
}
static void
sp_cpu_visualizer_row_finalize (GObject *object)
{
SpCpuVisualizerRow *self = (SpCpuVisualizerRow *)object;
g_clear_pointer (&self->colors, sp_color_cycle_unref);
G_OBJECT_CLASS (sp_cpu_visualizer_row_parent_class)->finalize (object);
}
static void
sp_cpu_visualizer_row_class_init (SpCpuVisualizerRowClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
SpVisualizerRowClass *row_class = SP_VISUALIZER_ROW_CLASS (klass);
object_class->finalize = sp_cpu_visualizer_row_finalize;
row_class->set_reader = sp_cpu_visualizer_row_set_reader;
}
static void
sp_cpu_visualizer_row_init (SpCpuVisualizerRow *self)
{
self->colors = sp_color_cycle_new ();
}
GtkWidget *
sp_cpu_visualizer_row_new (void)
{
return g_object_new (SP_TYPE_CPU_VISUALIZER_ROW, NULL);
}

View File

@ -1,4 +1,4 @@
/* sp-callgraph-view.c /* sysprof-callgraph-view.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -43,12 +43,12 @@
#include "../stackstash.h" #include "../stackstash.h"
#include "sp-callgraph-view.h" #include "sysprof-callgraph-view.h"
#include "sp-cell-renderer-percent.h" #include "sysprof-cell-renderer-percent.h"
typedef struct typedef struct
{ {
SpCallgraphProfile *profile; SysprofCallgraphProfile *profile;
GtkTreeView *callers_view; GtkTreeView *callers_view;
GtkTreeView *functions_view; GtkTreeView *functions_view;
@ -58,9 +58,9 @@ typedef struct
GQueue *history; GQueue *history;
guint profile_size; guint profile_size;
} SpCallgraphViewPrivate; } SysprofCallgraphViewPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SpCallgraphView, sp_callgraph_view, GTK_TYPE_BIN) G_DEFINE_TYPE_WITH_PRIVATE (SysprofCallgraphView, sysprof_callgraph_view, GTK_TYPE_BIN)
enum { enum {
PROP_0, PROP_0,
@ -81,21 +81,21 @@ enum {
}; };
static void sp_callgraph_view_update_descendants (SpCallgraphView *self, static void sysprof_callgraph_view_update_descendants (SysprofCallgraphView *self,
StackNode *node); StackNode *node);
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
static guint signals [N_SIGNALS]; static guint signals [N_SIGNALS];
static guint static guint
sp_callgraph_view_get_profile_size (SpCallgraphView *self) sysprof_callgraph_view_get_profile_size (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
StackStash *stash; StackStash *stash;
StackNode *node; StackNode *node;
guint size = 0; guint size = 0;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
if (priv->profile_size != 0) if (priv->profile_size != 0)
return priv->profile_size; return priv->profile_size;
@ -103,7 +103,7 @@ sp_callgraph_view_get_profile_size (SpCallgraphView *self)
if (priv->profile == NULL) if (priv->profile == NULL)
return 0; return 0;
if (NULL == (stash = sp_callgraph_profile_get_stash (priv->profile))) if (NULL == (stash = sysprof_callgraph_profile_get_stash (priv->profile)))
return 0; return 0;
for (node = stack_stash_get_root (stash); node != NULL; node = node->siblings) for (node = stack_stash_get_root (stash); node != NULL; node = node->siblings)
@ -148,10 +148,10 @@ build_functions_store (StackNode *node,
} }
static void static void
sp_callgraph_view_load (SpCallgraphView *self, sysprof_callgraph_view_load (SysprofCallgraphView *self,
SpCallgraphProfile *profile) SysprofCallgraphProfile *profile)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkListStore *functions; GtkListStore *functions;
StackStash *stash; StackStash *stash;
StackNode *n; StackNode *n;
@ -161,8 +161,8 @@ sp_callgraph_view_load (SpCallgraphView *self,
gdouble profile_size; gdouble profile_size;
} state = { 0 }; } state = { 0 };
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_assert (SP_IS_CALLGRAPH_PROFILE (profile)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (profile));
/* /*
* TODO: This is probably the type of thing we want to do off the main * TODO: This is probably the type of thing we want to do off the main
@ -175,7 +175,7 @@ sp_callgraph_view_load (SpCallgraphView *self,
g_set_object (&priv->profile, profile); g_set_object (&priv->profile, profile);
if (NULL == (stash = sp_callgraph_profile_get_stash (profile))) if (NULL == (stash = sysprof_callgraph_profile_get_stash (profile)))
return; return;
for (n = stack_stash_get_root (stash); n; n = n->siblings) for (n = stack_stash_get_root (stash); n; n = n->siblings)
@ -206,12 +206,12 @@ sp_callgraph_view_load (SpCallgraphView *self,
} }
static void static void
sp_callgraph_view_unload (SpCallgraphView *self) sysprof_callgraph_view_unload (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_assert (SP_IS_CALLGRAPH_PROFILE (priv->profile)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (priv->profile));
g_queue_clear (priv->history); g_queue_clear (priv->history);
g_clear_object (&priv->profile); g_clear_object (&priv->profile);
@ -223,45 +223,45 @@ sp_callgraph_view_unload (SpCallgraphView *self)
} }
/** /**
* sp_callgraph_view_get_profile: * sysprof_callgraph_view_get_profile:
* *
* Returns: (transfer none): An #SpCallgraphProfile. * Returns: (transfer none): An #SysprofCallgraphProfile.
*/ */
SpCallgraphProfile * SysprofCallgraphProfile *
sp_callgraph_view_get_profile (SpCallgraphView *self) sysprof_callgraph_view_get_profile (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
g_return_val_if_fail (SP_IS_CALLGRAPH_VIEW (self), NULL); g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self), NULL);
return priv->profile; return priv->profile;
} }
void void
sp_callgraph_view_set_profile (SpCallgraphView *self, sysprof_callgraph_view_set_profile (SysprofCallgraphView *self,
SpCallgraphProfile *profile) SysprofCallgraphProfile *profile)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
g_return_if_fail (SP_IS_CALLGRAPH_VIEW (self)); g_return_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_return_if_fail (!profile || SP_IS_CALLGRAPH_PROFILE (profile)); g_return_if_fail (!profile || SYSPROF_IS_CALLGRAPH_PROFILE (profile));
if (profile != priv->profile) if (profile != priv->profile)
{ {
if (priv->profile) if (priv->profile)
sp_callgraph_view_unload (self); sysprof_callgraph_view_unload (self);
if (profile) if (profile)
sp_callgraph_view_load (self, profile); sysprof_callgraph_view_load (self, profile);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PROFILE]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PROFILE]);
} }
} }
static void static void
sp_callgraph_view_expand_descendants (SpCallgraphView *self) sysprof_callgraph_view_expand_descendants (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeModel *model; GtkTreeModel *model;
GList *all_paths = NULL; GList *all_paths = NULL;
GtkTreePath *first_path; GtkTreePath *first_path;
@ -270,7 +270,7 @@ sp_callgraph_view_expand_descendants (SpCallgraphView *self)
gint max_rows = 40; /* FIXME */ gint max_rows = 40; /* FIXME */
gint n_rows; gint n_rows;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
model = gtk_tree_view_get_model (priv->descendants_view); model = gtk_tree_view_get_model (priv->descendants_view);
first_path = gtk_tree_path_new_first (); first_path = gtk_tree_path_new_first ();
@ -384,10 +384,10 @@ caller_free (gpointer data)
} }
static void static void
sp_callgraph_view_function_selection_changed (SpCallgraphView *self, sysprof_callgraph_view_function_selection_changed (SysprofCallgraphView *self,
GtkTreeSelection *selection) GtkTreeSelection *selection)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeModel *model = NULL; GtkTreeModel *model = NULL;
GtkTreeIter iter; GtkTreeIter iter;
GtkListStore *callers_store; GtkListStore *callers_store;
@ -396,7 +396,7 @@ sp_callgraph_view_function_selection_changed (SpCallgraphView *self,
StackNode *callees = NULL; StackNode *callees = NULL;
StackNode *node; StackNode *node;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_assert (GTK_IS_TREE_SELECTION (selection)); g_assert (GTK_IS_TREE_SELECTION (selection));
if (!gtk_tree_selection_get_selected (selection, &model, &iter)) if (!gtk_tree_selection_get_selected (selection, &model, &iter))
@ -410,7 +410,7 @@ sp_callgraph_view_function_selection_changed (SpCallgraphView *self,
COLUMN_POINTER, &callees, COLUMN_POINTER, &callees,
-1); -1);
sp_callgraph_view_update_descendants (self, callees); sysprof_callgraph_view_update_descendants (self, callees);
callers_store = gtk_list_store_new (4, callers_store = gtk_list_store_new (4,
G_TYPE_STRING, G_TYPE_STRING,
@ -479,7 +479,7 @@ sp_callgraph_view_function_selection_changed (SpCallgraphView *self,
gpointer key, value; gpointer key, value;
guint size = 0; guint size = 0;
size = MAX (1, sp_callgraph_view_get_profile_size (self)); size = MAX (1, sysprof_callgraph_view_get_profile_size (self));
g_hash_table_iter_init (&hiter, callers); g_hash_table_iter_init (&hiter, callers);
@ -506,14 +506,14 @@ sp_callgraph_view_function_selection_changed (SpCallgraphView *self,
} }
static void static void
sp_callgraph_view_set_node (SpCallgraphView *self, sysprof_callgraph_view_set_node (SysprofCallgraphView *self,
StackNode *node) StackNode *node)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_assert (node != NULL); g_assert (node != NULL);
if (priv->profile == NULL) if (priv->profile == NULL)
@ -546,7 +546,7 @@ sp_callgraph_view_set_node (SpCallgraphView *self,
} }
static void static void
sp_callgraph_view_descendant_activated (SpCallgraphView *self, sysprof_callgraph_view_descendant_activated (SysprofCallgraphView *self,
GtkTreePath *path, GtkTreePath *path,
GtkTreeViewColumn *column, GtkTreeViewColumn *column,
GtkTreeView *tree_view) GtkTreeView *tree_view)
@ -555,7 +555,7 @@ sp_callgraph_view_descendant_activated (SpCallgraphView *self,
StackNode *node = NULL; StackNode *node = NULL;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_assert (GTK_IS_TREE_VIEW (tree_view)); g_assert (GTK_IS_TREE_VIEW (tree_view));
g_assert (path != NULL); g_assert (path != NULL);
g_assert (GTK_IS_TREE_VIEW_COLUMN (column)); g_assert (GTK_IS_TREE_VIEW_COLUMN (column));
@ -570,11 +570,11 @@ sp_callgraph_view_descendant_activated (SpCallgraphView *self,
-1); -1);
if (node != NULL) if (node != NULL)
sp_callgraph_view_set_node (self, node); sysprof_callgraph_view_set_node (self, node);
} }
static void static void
sp_callgraph_view_caller_activated (SpCallgraphView *self, sysprof_callgraph_view_caller_activated (SysprofCallgraphView *self,
GtkTreePath *path, GtkTreePath *path,
GtkTreeViewColumn *column, GtkTreeViewColumn *column,
GtkTreeView *tree_view) GtkTreeView *tree_view)
@ -583,7 +583,7 @@ sp_callgraph_view_caller_activated (SpCallgraphView *self,
StackNode *node = NULL; StackNode *node = NULL;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
g_assert (GTK_IS_TREE_VIEW (tree_view)); g_assert (GTK_IS_TREE_VIEW (tree_view));
g_assert (path != NULL); g_assert (path != NULL);
g_assert (GTK_IS_TREE_VIEW_COLUMN (column)); g_assert (GTK_IS_TREE_VIEW_COLUMN (column));
@ -598,18 +598,18 @@ sp_callgraph_view_caller_activated (SpCallgraphView *self,
-1); -1);
if (node != NULL) if (node != NULL)
sp_callgraph_view_set_node (self, node); sysprof_callgraph_view_set_node (self, node);
} }
static void static void
sp_callgraph_view_tag_data_func (GtkTreeViewColumn *column, sysprof_callgraph_view_tag_data_func (GtkTreeViewColumn *column,
GtkCellRenderer *cell, GtkCellRenderer *cell,
GtkTreeModel *model, GtkTreeModel *model,
GtkTreeIter *iter, GtkTreeIter *iter,
gpointer data) gpointer data)
{ {
SpCallgraphView *self = data; SysprofCallgraphView *self = data;
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
StackNode *node = NULL; StackNode *node = NULL;
const gchar *str = NULL; const gchar *str = NULL;
@ -622,7 +622,7 @@ sp_callgraph_view_tag_data_func (GtkTreeViewColumn *column,
{ {
GQuark tag; GQuark tag;
tag = sp_callgraph_profile_get_tag (priv->profile, GSIZE_TO_POINTER (node->data)); tag = sysprof_callgraph_profile_get_tag (priv->profile, GSIZE_TO_POINTER (node->data));
if (tag != 0) if (tag != 0)
str = g_quark_to_string (tag); str = g_quark_to_string (tag);
} }
@ -631,39 +631,39 @@ sp_callgraph_view_tag_data_func (GtkTreeViewColumn *column,
} }
static void static void
sp_callgraph_view_real_go_previous (SpCallgraphView *self) sysprof_callgraph_view_real_go_previous (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
StackNode *node; StackNode *node;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
node = g_queue_pop_head (priv->history); node = g_queue_pop_head (priv->history);
if (NULL != (node = g_queue_peek_head (priv->history))) if (NULL != (node = g_queue_peek_head (priv->history)))
sp_callgraph_view_set_node (self, node); sysprof_callgraph_view_set_node (self, node);
} }
static void static void
sp_callgraph_view_finalize (GObject *object) sysprof_callgraph_view_finalize (GObject *object)
{ {
SpCallgraphView *self = (SpCallgraphView *)object; SysprofCallgraphView *self = (SysprofCallgraphView *)object;
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
g_clear_pointer (&priv->history, g_queue_free); g_clear_pointer (&priv->history, g_queue_free);
g_clear_object (&priv->profile); g_clear_object (&priv->profile);
G_OBJECT_CLASS (sp_callgraph_view_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_callgraph_view_parent_class)->finalize (object);
} }
static void static void
sp_callgraph_view_get_property (GObject *object, sysprof_callgraph_view_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpCallgraphView *self = SP_CALLGRAPH_VIEW (object); SysprofCallgraphView *self = SYSPROF_CALLGRAPH_VIEW (object);
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -677,17 +677,17 @@ sp_callgraph_view_get_property (GObject *object,
} }
static void static void
sp_callgraph_view_set_property (GObject *object, sysprof_callgraph_view_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpCallgraphView *self = SP_CALLGRAPH_VIEW (object); SysprofCallgraphView *self = SYSPROF_CALLGRAPH_VIEW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_PROFILE: case PROP_PROFILE:
sp_callgraph_view_set_profile (self, g_value_get_object (value)); sysprof_callgraph_view_set_profile (self, g_value_get_object (value));
break; break;
default: default:
@ -723,23 +723,23 @@ descendants_view_move_cursor_cb (GtkTreeView *descendants_view,
} }
static void static void
sp_callgraph_view_class_init (SpCallgraphViewClass *klass) sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkBindingSet *bindings; GtkBindingSet *bindings;
object_class->finalize = sp_callgraph_view_finalize; object_class->finalize = sysprof_callgraph_view_finalize;
object_class->get_property = sp_callgraph_view_get_property; object_class->get_property = sysprof_callgraph_view_get_property;
object_class->set_property = sp_callgraph_view_set_property; object_class->set_property = sysprof_callgraph_view_set_property;
klass->go_previous = sp_callgraph_view_real_go_previous; klass->go_previous = sysprof_callgraph_view_real_go_previous;
properties [PROP_PROFILE] = properties [PROP_PROFILE] =
g_param_spec_object ("profile", g_param_spec_object ("profile",
"Profile", "Profile",
"The callgraph profile to view", "The callgraph profile to view",
SP_TYPE_CALLGRAPH_PROFILE, SYSPROF_TYPE_CALLGRAPH_PROFILE,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
@ -748,27 +748,27 @@ sp_callgraph_view_class_init (SpCallgraphViewClass *klass)
g_signal_new ("go-previous", g_signal_new ("go-previous",
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (SpCallgraphViewClass, go_previous), G_STRUCT_OFFSET (SysprofCallgraphViewClass, go_previous),
NULL, NULL, NULL, G_TYPE_NONE, 0); NULL, NULL, NULL, G_TYPE_NONE, 0);
gtk_widget_class_set_template_from_resource (widget_class, gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/sysprof/ui/sp-callgraph-view.ui"); "/org/gnome/sysprof/ui/sysprof-callgraph-view.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpCallgraphView, callers_view); gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, callers_view);
gtk_widget_class_bind_template_child_private (widget_class, SpCallgraphView, functions_view); gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, functions_view);
gtk_widget_class_bind_template_child_private (widget_class, SpCallgraphView, descendants_view); gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, descendants_view);
gtk_widget_class_bind_template_child_private (widget_class, SpCallgraphView, descendants_name_column); gtk_widget_class_bind_template_child_private (widget_class, SysprofCallgraphView, descendants_name_column);
bindings = gtk_binding_set_by_class (klass); bindings = gtk_binding_set_by_class (klass);
gtk_binding_entry_add_signal (bindings, GDK_KEY_Left, GDK_MOD1_MASK, "go-previous", 0); gtk_binding_entry_add_signal (bindings, GDK_KEY_Left, GDK_MOD1_MASK, "go-previous", 0);
g_type_ensure (SP_TYPE_CELL_RENDERER_PERCENT); g_type_ensure (SYSPROF_TYPE_CELL_RENDERER_PERCENT);
} }
static void static void
sp_callgraph_view_init (SpCallgraphView *self) sysprof_callgraph_view_init (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeSelection *selection; GtkTreeSelection *selection;
GtkCellRenderer *cell; GtkCellRenderer *cell;
@ -780,19 +780,19 @@ sp_callgraph_view_init (SpCallgraphView *self)
g_signal_connect_object (selection, g_signal_connect_object (selection,
"changed", "changed",
G_CALLBACK (sp_callgraph_view_function_selection_changed), G_CALLBACK (sysprof_callgraph_view_function_selection_changed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->descendants_view, g_signal_connect_object (priv->descendants_view,
"row-activated", "row-activated",
G_CALLBACK (sp_callgraph_view_descendant_activated), G_CALLBACK (sysprof_callgraph_view_descendant_activated),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->callers_view, g_signal_connect_object (priv->callers_view,
"row-activated", "row-activated",
G_CALLBACK (sp_callgraph_view_caller_activated), G_CALLBACK (sysprof_callgraph_view_caller_activated),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
@ -815,7 +815,7 @@ sp_callgraph_view_init (SpCallgraphView *self)
NULL); NULL);
gtk_tree_view_column_pack_start (priv->descendants_name_column, cell, FALSE); gtk_tree_view_column_pack_start (priv->descendants_name_column, cell, FALSE);
gtk_tree_view_column_set_cell_data_func (priv->descendants_name_column, cell, gtk_tree_view_column_set_cell_data_func (priv->descendants_name_column, cell,
sp_callgraph_view_tag_data_func, sysprof_callgraph_view_tag_data_func,
self, NULL); self, NULL);
} }
@ -916,7 +916,7 @@ build_tree (StackNode *node)
} }
static void static void
append_to_tree_and_free (SpCallgraphView *self, append_to_tree_and_free (SysprofCallgraphView *self,
StackStash *stash, StackStash *stash,
GtkTreeStore *store, GtkTreeStore *store,
Descendant *item, Descendant *item,
@ -929,7 +929,7 @@ append_to_tree_and_free (SpCallgraphView *self,
g_assert (GTK_IS_TREE_STORE (store)); g_assert (GTK_IS_TREE_STORE (store));
g_assert (item != NULL); g_assert (item != NULL);
profile_size = MAX (1, sp_callgraph_view_get_profile_size (self)); profile_size = MAX (1, sysprof_callgraph_view_get_profile_size (self));
gtk_tree_store_append (store, &iter, parent); gtk_tree_store_append (store, &iter, parent);
@ -952,13 +952,13 @@ append_to_tree_and_free (SpCallgraphView *self,
} }
static void static void
sp_callgraph_view_update_descendants (SpCallgraphView *self, sysprof_callgraph_view_update_descendants (SysprofCallgraphView *self,
StackNode *node) StackNode *node)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeStore *store; GtkTreeStore *store;
g_assert (SP_IS_CALLGRAPH_VIEW (self)); g_assert (SYSPROF_IS_CALLGRAPH_VIEW (self));
if (g_queue_peek_head (priv->history) != node) if (g_queue_peek_head (priv->history) != node)
g_queue_push_head (priv->history, node); g_queue_push_head (priv->history, node);
@ -973,7 +973,7 @@ sp_callgraph_view_update_descendants (SpCallgraphView *self,
{ {
StackStash *stash; StackStash *stash;
stash = sp_callgraph_profile_get_stash (priv->profile); stash = sysprof_callgraph_profile_get_stash (priv->profile);
if (stash != NULL) if (stash != NULL)
{ {
Descendant *tree; Descendant *tree;
@ -987,14 +987,14 @@ sp_callgraph_view_update_descendants (SpCallgraphView *self,
gtk_tree_view_set_model (priv->descendants_view, GTK_TREE_MODEL (store)); gtk_tree_view_set_model (priv->descendants_view, GTK_TREE_MODEL (store));
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
COLUMN_TOTAL, GTK_SORT_DESCENDING); COLUMN_TOTAL, GTK_SORT_DESCENDING);
sp_callgraph_view_expand_descendants (self); sysprof_callgraph_view_expand_descendants (self);
g_clear_object (&store); g_clear_object (&store);
} }
/** /**
* sp_callgraph_view_screenshot: * sysprof_callgraph_view_screenshot:
* @self: A #SpCallgraphView. * @self: A #SysprofCallgraphView.
* *
* This function will generate a text representation of the descendants tree. * This function will generate a text representation of the descendants tree.
* This is useful if you want to include various profiling information in a * This is useful if you want to include various profiling information in a
@ -1006,16 +1006,16 @@ sp_callgraph_view_update_descendants (SpCallgraphView *self,
* with g_free(). * with g_free().
*/ */
gchar * gchar *
sp_callgraph_view_screenshot (SpCallgraphView *self) sysprof_callgraph_view_screenshot (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeView *tree_view; GtkTreeView *tree_view;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreePath *tree_path; GtkTreePath *tree_path;
GString *str; GString *str;
GtkTreeIter iter; GtkTreeIter iter;
g_return_val_if_fail (SP_IS_CALLGRAPH_VIEW (self), NULL); g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self), NULL);
tree_view = priv->descendants_view; tree_view = priv->descendants_view;
@ -1073,13 +1073,13 @@ sp_callgraph_view_screenshot (SpCallgraphView *self)
} }
guint guint
sp_callgraph_view_get_n_functions (SpCallgraphView *self) sysprof_callgraph_view_get_n_functions (SysprofCallgraphView *self)
{ {
SpCallgraphViewPrivate *priv = sp_callgraph_view_get_instance_private (self); SysprofCallgraphViewPrivate *priv = sysprof_callgraph_view_get_instance_private (self);
GtkTreeModel *model; GtkTreeModel *model;
guint ret = 0; guint ret = 0;
g_return_val_if_fail (SP_IS_CALLGRAPH_VIEW (self), 0); g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self), 0);
if (NULL != (model = gtk_tree_view_get_model (priv->functions_view))) if (NULL != (model = gtk_tree_view_get_model (priv->functions_view)))
ret = gtk_tree_model_iter_n_children (model, NULL); ret = gtk_tree_model_iter_n_children (model, NULL);

View File

@ -1,4 +1,4 @@
/* sp-callgraph-view.h /* sysprof-callgraph-view.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,36 +22,36 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-callgraph-profile.h" #include "sysprof-callgraph-profile.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_CALLGRAPH_VIEW (sp_callgraph_view_get_type()) #define SYSPROF_TYPE_CALLGRAPH_VIEW (sysprof_callgraph_view_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpCallgraphView, sp_callgraph_view, SP, CALLGRAPH_VIEW, GtkBin) G_DECLARE_DERIVABLE_TYPE (SysprofCallgraphView, sysprof_callgraph_view, SYSPROF, CALLGRAPH_VIEW, GtkBin)
struct _SpCallgraphViewClass struct _SysprofCallgraphViewClass
{ {
GtkBinClass parent_class; GtkBinClass parent_class;
void (*go_previous) (SpCallgraphView *self); void (*go_previous) (SysprofCallgraphView *self);
gpointer padding[8]; gpointer padding[8];
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_callgraph_view_new (void); GtkWidget *sysprof_callgraph_view_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCallgraphProfile *sp_callgraph_view_get_profile (SpCallgraphView *self); SysprofCallgraphProfile *sysprof_callgraph_view_get_profile (SysprofCallgraphView *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_callgraph_view_set_profile (SpCallgraphView *self, void sysprof_callgraph_view_set_profile (SysprofCallgraphView *self,
SpCallgraphProfile *profile); SysprofCallgraphProfile *profile);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gchar *sp_callgraph_view_screenshot (SpCallgraphView *self); gchar *sysprof_callgraph_view_screenshot (SysprofCallgraphView *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
guint sp_callgraph_view_get_n_functions (SpCallgraphView *self); guint sysprof_callgraph_view_get_n_functions (SysprofCallgraphView *self);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-cell-renderer-percent.c /* sysprof-cell-renderer-percent.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,12 +22,12 @@
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include "sp-cell-renderer-percent.h" #include "sysprof-cell-renderer-percent.h"
typedef struct typedef struct
{ {
gdouble percent; gdouble percent;
} SpCellRendererPercentPrivate; } SysprofCellRendererPercentPrivate;
enum { enum {
PROP_0, PROP_0,
@ -35,22 +35,22 @@ enum {
N_PROPS N_PROPS
}; };
G_DEFINE_TYPE_WITH_PRIVATE (SpCellRendererPercent, sp_cell_renderer_percent, GTK_TYPE_CELL_RENDERER_TEXT) G_DEFINE_TYPE_WITH_PRIVATE (SysprofCellRendererPercent, sysprof_cell_renderer_percent, GTK_TYPE_CELL_RENDERER_TEXT)
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
static void static void
sp_cell_renderer_percent_get_property (GObject *object, sysprof_cell_renderer_percent_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpCellRendererPercent *self = SP_CELL_RENDERER_PERCENT (object); SysprofCellRendererPercent *self = SYSPROF_CELL_RENDERER_PERCENT (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_PERCENT: case PROP_PERCENT:
g_value_set_double (value, sp_cell_renderer_percent_get_percent (self)); g_value_set_double (value, sysprof_cell_renderer_percent_get_percent (self));
break; break;
default: default:
@ -59,17 +59,17 @@ sp_cell_renderer_percent_get_property (GObject *object,
} }
static void static void
sp_cell_renderer_percent_set_property (GObject *object, sysprof_cell_renderer_percent_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpCellRendererPercent *self = SP_CELL_RENDERER_PERCENT (object); SysprofCellRendererPercent *self = SYSPROF_CELL_RENDERER_PERCENT (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_PERCENT: case PROP_PERCENT:
sp_cell_renderer_percent_set_percent (self, g_value_get_double (value)); sysprof_cell_renderer_percent_set_percent (self, g_value_get_double (value));
break; break;
default: default:
@ -78,12 +78,12 @@ sp_cell_renderer_percent_set_property (GObject *object,
} }
static void static void
sp_cell_renderer_percent_class_init (SpCellRendererPercentClass *klass) sysprof_cell_renderer_percent_class_init (SysprofCellRendererPercentClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->get_property = sp_cell_renderer_percent_get_property; object_class->get_property = sysprof_cell_renderer_percent_get_property;
object_class->set_property = sp_cell_renderer_percent_set_property; object_class->set_property = sysprof_cell_renderer_percent_set_property;
properties [PROP_PERCENT] = properties [PROP_PERCENT] =
g_param_spec_double ("percent", g_param_spec_double ("percent",
@ -98,28 +98,28 @@ sp_cell_renderer_percent_class_init (SpCellRendererPercentClass *klass)
} }
static void static void
sp_cell_renderer_percent_init (SpCellRendererPercent *self) sysprof_cell_renderer_percent_init (SysprofCellRendererPercent *self)
{ {
g_object_set (self, "xalign", 1.0f, NULL); g_object_set (self, "xalign", 1.0f, NULL);
} }
gdouble gdouble
sp_cell_renderer_percent_get_percent (SpCellRendererPercent *self) sysprof_cell_renderer_percent_get_percent (SysprofCellRendererPercent *self)
{ {
SpCellRendererPercentPrivate *priv = sp_cell_renderer_percent_get_instance_private (self); SysprofCellRendererPercentPrivate *priv = sysprof_cell_renderer_percent_get_instance_private (self);
g_return_val_if_fail (SP_IS_CELL_RENDERER_PERCENT (self), 0.0); g_return_val_if_fail (SYSPROF_IS_CELL_RENDERER_PERCENT (self), 0.0);
return priv->percent; return priv->percent;
} }
void void
sp_cell_renderer_percent_set_percent (SpCellRendererPercent *self, sysprof_cell_renderer_percent_set_percent (SysprofCellRendererPercent *self,
gdouble percent) gdouble percent)
{ {
SpCellRendererPercentPrivate *priv = sp_cell_renderer_percent_get_instance_private (self); SysprofCellRendererPercentPrivate *priv = sysprof_cell_renderer_percent_get_instance_private (self);
g_return_if_fail (SP_IS_CELL_RENDERER_PERCENT (self)); g_return_if_fail (SYSPROF_IS_CELL_RENDERER_PERCENT (self));
g_return_if_fail (percent >= 0.0); g_return_if_fail (percent >= 0.0);
g_return_if_fail (percent <= 100.0); g_return_if_fail (percent <= 100.0);

View File

@ -0,0 +1,62 @@
/* sysprof-cell-renderer-percent.h
*
* Copyright 2016-2019 Christian Hergert <christian@hergert.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include <gtk/gtk.h>
#include "sysprof-version-macros.h"
G_BEGIN_DECLS
#define SYSPROF_TYPE_CELL_RENDERER_PERCENT (sysprof_cell_renderer_percent_get_type())
#define SYSPROF_CELL_RENDERER_PERCENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SYSPROF_TYPE_CELL_RENDERER_PERCENT, SysprofCellRendererPercent))
#define SYSPROF_CELL_RENDERER_PERCENT_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SYSPROF_TYPE_CELL_RENDERER_PERCENT, SysprofCellRendererPercent const))
#define SYSPROF_CELL_RENDERER_PERCENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SYSPROF_TYPE_CELL_RENDERER_PERCENT, SysprofCellRendererPercentClass))
#define SYSPROF_IS_CELL_RENDERER_PERCENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SYSPROF_TYPE_CELL_RENDERER_PERCENT))
#define SYSPROF_IS_CELL_RENDERER_PERCENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SYSPROF_TYPE_CELL_RENDERER_PERCENT))
#define SYSPROF_CELL_RENDERER_PERCENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SYSPROF_TYPE_CELL_RENDERER_PERCENT, SysprofCellRendererPercentClass))
typedef struct _SysprofCellRendererPercent SysprofCellRendererPercent;
typedef struct _SysprofCellRendererPercentClass SysprofCellRendererPercentClass;
struct _SysprofCellRendererPercent
{
GtkCellRendererText parent;
};
struct _SysprofCellRendererPercentClass
{
GtkCellRendererTextClass parent_class;
gpointer padding[4];
};
SYSPROF_AVAILABLE_IN_ALL
GType sysprof_cell_renderer_percent_get_type (void);
SYSPROF_AVAILABLE_IN_ALL
GtkCellRenderer *sysprof_cell_renderer_percent_new (void);
SYSPROF_AVAILABLE_IN_ALL
gdouble sysprof_cell_renderer_percent_get_percent (SysprofCellRendererPercent *self);
SYSPROF_AVAILABLE_IN_ALL
void sysprof_cell_renderer_percent_set_percent (SysprofCellRendererPercent *self,
gdouble percent);
G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-color-cycle.c /* sysprof-color-cycle.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,13 +18,13 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-color-cycle" #define G_LOG_DOMAIN "sysprof-color-cycle"
#include "config.h" #include "config.h"
#include "sp-color-cycle.h" #include "sysprof-color-cycle.h"
G_DEFINE_BOXED_TYPE (SpColorCycle, sp_color_cycle, sp_color_cycle_ref, sp_color_cycle_unref) G_DEFINE_BOXED_TYPE (SysprofColorCycle, sysprof_color_cycle, sysprof_color_cycle_ref, sysprof_color_cycle_unref)
static const gchar *default_colors[] = { static const gchar *default_colors[] = {
"#73d216", "#73d216",
@ -54,7 +54,7 @@ static const gchar *default_colors[] = {
NULL NULL
}; };
struct _SpColorCycle struct _SysprofColorCycle
{ {
volatile gint ref_count; volatile gint ref_count;
GdkRGBA *colors; GdkRGBA *colors;
@ -63,18 +63,18 @@ struct _SpColorCycle
}; };
static void static void
sp_color_cycle_destroy (SpColorCycle *self) sysprof_color_cycle_destroy (SysprofColorCycle *self)
{ {
g_free (self->colors); g_free (self->colors);
g_slice_free (SpColorCycle, self); g_slice_free (SysprofColorCycle, self);
} }
SpColorCycle * SysprofColorCycle *
sp_color_cycle_new (void) sysprof_color_cycle_new (void)
{ {
SpColorCycle *self; SysprofColorCycle *self;
self = g_slice_new0 (SpColorCycle); self = g_slice_new0 (SysprofColorCycle);
self->ref_count = 1; self->ref_count = 1;
self->n_colors = g_strv_length ((gchar **)default_colors); self->n_colors = g_strv_length ((gchar **)default_colors);
self->colors = g_new0 (GdkRGBA, self->n_colors); self->colors = g_new0 (GdkRGBA, self->n_colors);
@ -88,8 +88,8 @@ sp_color_cycle_new (void)
return self; return self;
} }
SpColorCycle * SysprofColorCycle *
sp_color_cycle_ref (SpColorCycle *self) sysprof_color_cycle_ref (SysprofColorCycle *self)
{ {
g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (self != NULL, NULL);
g_return_val_if_fail (self->ref_count > 0, NULL); g_return_val_if_fail (self->ref_count > 0, NULL);
@ -98,16 +98,16 @@ sp_color_cycle_ref (SpColorCycle *self)
} }
void void
sp_color_cycle_unref (SpColorCycle *self) sysprof_color_cycle_unref (SysprofColorCycle *self)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
g_return_if_fail (self->ref_count > 0); g_return_if_fail (self->ref_count > 0);
if (g_atomic_int_dec_and_test (&self->ref_count)) if (g_atomic_int_dec_and_test (&self->ref_count))
sp_color_cycle_destroy (self); sysprof_color_cycle_destroy (self);
} }
void void
sp_color_cycle_next (SpColorCycle *self, sysprof_color_cycle_next (SysprofColorCycle *self,
GdkRGBA *rgba) GdkRGBA *rgba)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
@ -126,7 +126,7 @@ sp_color_cycle_next (SpColorCycle *self,
} }
void void
sp_color_cycle_reset (SpColorCycle *self) sysprof_color_cycle_reset (SysprofColorCycle *self)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);

View File

@ -1,4 +1,4 @@
/* sp-color-cycle.h /* sysprof-color-cycle.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -26,22 +26,22 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_COLOR_CYCLE (sp_color_cycle_get_type()) #define SYSPROF_TYPE_COLOR_CYCLE (sysprof_color_cycle_get_type())
typedef struct _SpColorCycle SpColorCycle; typedef struct _SysprofColorCycle SysprofColorCycle;
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GType sp_color_cycle_get_type (void); GType sysprof_color_cycle_get_type (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpColorCycle *sp_color_cycle_ref (SpColorCycle *self); SysprofColorCycle *sysprof_color_cycle_ref (SysprofColorCycle *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_color_cycle_unref (SpColorCycle *self); void sysprof_color_cycle_unref (SysprofColorCycle *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpColorCycle *sp_color_cycle_new (void); SysprofColorCycle *sysprof_color_cycle_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_color_cycle_reset (SpColorCycle *self); void sysprof_color_cycle_reset (SysprofColorCycle *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_color_cycle_next (SpColorCycle *self, void sysprof_color_cycle_next (SysprofColorCycle *self,
GdkRGBA *rgba); GdkRGBA *rgba);
G_END_DECLS G_END_DECLS

View File

@ -0,0 +1,173 @@
/* sysprof-cpu-visualizer-row.c
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#define G_LOG_DOMAIN "sysprof-cpu-visualizer-row"
#include "config.h"
#include "sysprof-capture-condition.h"
#include "sysprof-capture-cursor.h"
#include "sysprof-color-cycle.h"
#include "sysprof-cpu-visualizer-row.h"
struct _SysprofCpuVisualizerRow
{
SysprofLineVisualizerRow parent_instance;
SysprofColorCycle *colors;
};
G_DEFINE_TYPE (SysprofCpuVisualizerRow, sysprof_cpu_visualizer_row, SYSPROF_TYPE_LINE_VISUALIZER_ROW)
static gboolean
sysprof_cpu_visualizer_counter_found (const SysprofCaptureFrame *frame,
gpointer user_data)
{
const SysprofCaptureFrameCounterDefine *def = (SysprofCaptureFrameCounterDefine *)frame;
GArray *counters = user_data;
gboolean found = FALSE;
g_assert (frame->type == SYSPROF_CAPTURE_FRAME_CTRDEF);
/*
* In practice, all the CPU counters are defined at once, so we can avoid
* walking the rest of the capture by returning after we find our CTRDEF.
*/
for (guint i = 0; i < def->n_counters; i++)
{
if (g_str_equal (def->counters[i].category, "CPU Percent"))
{
guint id = def->counters[i].id;
g_array_append_val (counters, id);
found = TRUE;
}
}
return !found;
}
static void
sysprof_cpu_visualizer_row_discover_counters (GTask *task,
gpointer source_object,
gpointer task_data,
GCancellable *canellable)
{
const SysprofCaptureFrameType types[] = { SYSPROF_CAPTURE_FRAME_CTRDEF };
SysprofCaptureReader *reader = task_data;
g_autoptr(SysprofCaptureCursor) cursor = NULL;
g_autoptr(GArray) counters = NULL;
g_assert (G_IS_TASK (task));
g_assert (SYSPROF_IS_CPU_VISUALIZER_ROW (source_object));
g_assert (reader != NULL);
counters = g_array_new (FALSE, FALSE, sizeof (guint));
cursor = sysprof_capture_cursor_new (reader);
sysprof_capture_cursor_add_condition (cursor, sysprof_capture_condition_new_where_type_in (G_N_ELEMENTS (types), types));
sysprof_capture_cursor_foreach (cursor, sysprof_cpu_visualizer_counter_found, counters);
g_task_return_pointer (task, g_steal_pointer (&counters), (GDestroyNotify)g_array_unref);
}
static void
complete_counters (GObject *object,
GAsyncResult *result,
gpointer user_data)
{
SysprofCpuVisualizerRow *self = (SysprofCpuVisualizerRow *)object;
g_autoptr(GArray) counters = NULL;
g_assert (SYSPROF_IS_CPU_VISUALIZER_ROW (self));
g_assert (G_IS_TASK (result));
counters = g_task_propagate_pointer (G_TASK (result), NULL);
if (counters != NULL)
{
for (guint i = 0; i < counters->len; i++)
{
guint counter_id = g_array_index (counters, guint, i);
GdkRGBA color;
sysprof_color_cycle_next (self->colors, &color);
sysprof_line_visualizer_row_add_counter (SYSPROF_LINE_VISUALIZER_ROW (self), counter_id, &color);
}
}
/* Hide ourself if we failed to locate counters */
gtk_widget_set_visible (GTK_WIDGET (self), counters != NULL && counters->len > 0);
}
static void
sysprof_cpu_visualizer_row_set_reader (SysprofVisualizerRow *row,
SysprofCaptureReader *reader)
{
SysprofCpuVisualizerRow *self = (SysprofCpuVisualizerRow *)row;
g_autoptr(GTask) task = NULL;
g_assert (SYSPROF_IS_CPU_VISUALIZER_ROW (row));
sysprof_color_cycle_reset (self->colors);
sysprof_line_visualizer_row_clear (SYSPROF_LINE_VISUALIZER_ROW (row));
SYSPROF_VISUALIZER_ROW_CLASS (sysprof_cpu_visualizer_row_parent_class)->set_reader (row, reader);
if (reader != NULL)
{
task = g_task_new (self, NULL, complete_counters, NULL);
g_task_set_source_tag (task, sysprof_cpu_visualizer_row_set_reader);
g_task_set_task_data (task, sysprof_capture_reader_copy (reader),
(GDestroyNotify)sysprof_capture_reader_unref);
g_task_run_in_thread (task, sysprof_cpu_visualizer_row_discover_counters);
}
}
static void
sysprof_cpu_visualizer_row_finalize (GObject *object)
{
SysprofCpuVisualizerRow *self = (SysprofCpuVisualizerRow *)object;
g_clear_pointer (&self->colors, sysprof_color_cycle_unref);
G_OBJECT_CLASS (sysprof_cpu_visualizer_row_parent_class)->finalize (object);
}
static void
sysprof_cpu_visualizer_row_class_init (SysprofCpuVisualizerRowClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
SysprofVisualizerRowClass *row_class = SYSPROF_VISUALIZER_ROW_CLASS (klass);
object_class->finalize = sysprof_cpu_visualizer_row_finalize;
row_class->set_reader = sysprof_cpu_visualizer_row_set_reader;
}
static void
sysprof_cpu_visualizer_row_init (SysprofCpuVisualizerRow *self)
{
self->colors = sysprof_color_cycle_new ();
}
GtkWidget *
sysprof_cpu_visualizer_row_new (void)
{
return g_object_new (SYSPROF_TYPE_CPU_VISUALIZER_ROW, NULL);
}

View File

@ -1,4 +1,4 @@
/* sp-cpu-visualizer-row.h /* sysprof-cpu-visualizer-row.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,18 +20,18 @@
#pragma once #pragma once
#include "sp-line-visualizer-row.h" #include "sysprof-line-visualizer-row.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_CPU_VISUALIZER_ROW (sp_cpu_visualizer_row_get_type()) #define SYSPROF_TYPE_CPU_VISUALIZER_ROW (sysprof_cpu_visualizer_row_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SpCpuVisualizerRow, sp_cpu_visualizer_row, SP, CPU_VISUALIZER_ROW, SpLineVisualizerRow) G_DECLARE_FINAL_TYPE (SysprofCpuVisualizerRow, sysprof_cpu_visualizer_row, SYSPROF, CPU_VISUALIZER_ROW, SysprofLineVisualizerRow)
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_cpu_visualizer_row_new (void); GtkWidget *sysprof_cpu_visualizer_row_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-empty-state-view.c /* sysprof-empty-state-view.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,21 +18,21 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-empty-state-view" #define G_LOG_DOMAIN "sysprof-empty-state-view"
#include "config.h" #include "config.h"
#include <string.h> #include <string.h>
#include "sp-empty-state-view.h" #include "sysprof-empty-state-view.h"
typedef struct typedef struct
{ {
GtkLabel *title; GtkLabel *title;
GtkLabel *subtitle; GtkLabel *subtitle;
} SpEmptyStateViewPrivate; } SysprofEmptyStateViewPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SpEmptyStateView, sp_empty_state_view, GTK_TYPE_BIN) G_DEFINE_TYPE_WITH_PRIVATE (SysprofEmptyStateView, sysprof_empty_state_view, GTK_TYPE_BIN)
enum { enum {
PROP_0, PROP_0,
@ -44,13 +44,13 @@ enum {
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
GtkWidget * GtkWidget *
sp_empty_state_view_new (void) sysprof_empty_state_view_new (void)
{ {
return g_object_new (SP_TYPE_EMPTY_STATE_VIEW, NULL); return g_object_new (SYSPROF_TYPE_EMPTY_STATE_VIEW, NULL);
} }
static gboolean static gboolean
sp_empty_state_view_action (GtkWidget *widget, sysprof_empty_state_view_action (GtkWidget *widget,
const gchar *prefix, const gchar *prefix,
const gchar *action_name, const gchar *action_name,
GVariant *parameter) GVariant *parameter)
@ -96,11 +96,11 @@ sp_empty_state_view_action (GtkWidget *widget,
} }
static gboolean static gboolean
sp_empty_state_view_activate_link (SpEmptyStateView *self, sysprof_empty_state_view_activate_link (SysprofEmptyStateView *self,
const gchar *uri, const gchar *uri,
GtkLabel *label) GtkLabel *label)
{ {
g_assert (SP_IS_EMPTY_STATE_VIEW (self)); g_assert (SYSPROF_IS_EMPTY_STATE_VIEW (self));
g_assert (uri != NULL); g_assert (uri != NULL);
g_assert (GTK_IS_LABEL (label)); g_assert (GTK_IS_LABEL (label));
@ -127,7 +127,7 @@ sp_empty_state_view_activate_link (SpEmptyStateView *self,
group_name = g_strndup (full_name, dot - full_name); group_name = g_strndup (full_name, dot - full_name);
action_name = g_strdup (++dot); action_name = g_strdup (++dot);
sp_empty_state_view_action (GTK_WIDGET (self), sysprof_empty_state_view_action (GTK_WIDGET (self),
group_name, group_name,
action_name, action_name,
param); param);
@ -142,13 +142,13 @@ sp_empty_state_view_activate_link (SpEmptyStateView *self,
} }
static void static void
sp_empty_state_view_set_property (GObject *object, sysprof_empty_state_view_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpEmptyStateView *self = SP_EMPTY_STATE_VIEW (object); SysprofEmptyStateView *self = SYSPROF_EMPTY_STATE_VIEW (object);
SpEmptyStateViewPrivate *priv = sp_empty_state_view_get_instance_private (self); SysprofEmptyStateViewPrivate *priv = sysprof_empty_state_view_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -166,12 +166,12 @@ sp_empty_state_view_set_property (GObject *object,
} }
static void static void
sp_empty_state_view_class_init (SpEmptyStateViewClass *klass) sysprof_empty_state_view_class_init (SysprofEmptyStateViewClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->set_property = sp_empty_state_view_set_property; object_class->set_property = sysprof_empty_state_view_set_property;
properties [PROP_TITLE] = properties [PROP_TITLE] =
g_param_spec_string ("title", g_param_spec_string ("title",
@ -189,21 +189,21 @@ sp_empty_state_view_class_init (SpEmptyStateViewClass *klass)
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sp-empty-state-view.ui"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sysprof-empty-state-view.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpEmptyStateView, subtitle); gtk_widget_class_bind_template_child_private (widget_class, SysprofEmptyStateView, subtitle);
gtk_widget_class_bind_template_child_private (widget_class, SpEmptyStateView, title); gtk_widget_class_bind_template_child_private (widget_class, SysprofEmptyStateView, title);
} }
static void static void
sp_empty_state_view_init (SpEmptyStateView *self) sysprof_empty_state_view_init (SysprofEmptyStateView *self)
{ {
SpEmptyStateViewPrivate *priv = sp_empty_state_view_get_instance_private (self); SysprofEmptyStateViewPrivate *priv = sysprof_empty_state_view_get_instance_private (self);
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));
g_signal_connect_object (priv->subtitle, g_signal_connect_object (priv->subtitle,
"activate-link", "activate-link",
G_CALLBACK (sp_empty_state_view_activate_link), G_CALLBACK (sysprof_empty_state_view_activate_link),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
} }

View File

@ -1,4 +1,4 @@
/* sp-empty-state-view.h /* sysprof-empty-state-view.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -26,12 +26,12 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_EMPTY_STATE_VIEW (sp_empty_state_view_get_type()) #define SYSPROF_TYPE_EMPTY_STATE_VIEW (sysprof_empty_state_view_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpEmptyStateView, sp_empty_state_view, SP, EMPTY_STATE_VIEW, GtkBin) G_DECLARE_DERIVABLE_TYPE (SysprofEmptyStateView, sysprof_empty_state_view, SYSPROF, EMPTY_STATE_VIEW, GtkBin)
struct _SpEmptyStateViewClass struct _SysprofEmptyStateViewClass
{ {
GtkBinClass parent; GtkBinClass parent;
@ -39,6 +39,6 @@ struct _SpEmptyStateViewClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_empty_state_view_new (void); GtkWidget *sysprof_empty_state_view_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-failed-state-view.c /* sysprof-failed-state-view.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,27 +20,27 @@
#include "config.h" #include "config.h"
#include "sp-failed-state-view.h" #include "sysprof-failed-state-view.h"
G_DEFINE_TYPE (SpFailedStateView, sp_failed_state_view, GTK_TYPE_BIN) G_DEFINE_TYPE (SysprofFailedStateView, sysprof_failed_state_view, GTK_TYPE_BIN)
GtkWidget * GtkWidget *
sp_failed_state_view_new (void) sysprof_failed_state_view_new (void)
{ {
return g_object_new (SP_TYPE_FAILED_STATE_VIEW, NULL); return g_object_new (SYSPROF_TYPE_FAILED_STATE_VIEW, NULL);
} }
static void static void
sp_failed_state_view_class_init (SpFailedStateViewClass *klass) sysprof_failed_state_view_class_init (SysprofFailedStateViewClass *klass)
{ {
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
gtk_widget_class_set_template_from_resource (widget_class, gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/sysprof/ui/sp-failed-state-view.ui"); "/org/gnome/sysprof/ui/sysprof-failed-state-view.ui");
} }
static void static void
sp_failed_state_view_init (SpFailedStateView *self) sysprof_failed_state_view_init (SysprofFailedStateView *self)
{ {
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));
} }

View File

@ -1,4 +1,4 @@
/* sp-failed-state-view.h /* sysprof-failed-state-view.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,17 +22,17 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-profiler.h" #include "sysprof-profiler.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_FAILED_STATE_VIEW (sp_failed_state_view_get_type()) #define SYSPROF_TYPE_FAILED_STATE_VIEW (sysprof_failed_state_view_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpFailedStateView, sp_failed_state_view, SP, FAILED_STATE_VIEW, GtkBin) G_DECLARE_DERIVABLE_TYPE (SysprofFailedStateView, sysprof_failed_state_view, SYSPROF, FAILED_STATE_VIEW, GtkBin)
struct _SpFailedStateViewClass struct _SysprofFailedStateViewClass
{ {
GtkBinClass parent; GtkBinClass parent;
@ -40,9 +40,9 @@ struct _SpFailedStateViewClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_failed_state_view_new (void); GtkWidget *sysprof_failed_state_view_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_failed_state_view_set_profiler (SpFailedStateView *self, void sysprof_failed_state_view_set_profiler (SysprofFailedStateView *self,
SpProfiler *profiler); SysprofProfiler *profiler);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-line-visualizer-row.c /* sysprof-line-visualizer-row.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-line-visualizer-row" #define G_LOG_DOMAIN "sysprof-line-visualizer-row"
#include "config.h" #include "config.h"
@ -26,16 +26,16 @@
#include <string.h> #include <string.h>
#include "pointcache.h" #include "pointcache.h"
#include "sp-capture-condition.h" #include "sysprof-capture-condition.h"
#include "sp-capture-cursor.h" #include "sysprof-capture-cursor.h"
#include "sp-line-visualizer-row.h" #include "sysprof-line-visualizer-row.h"
typedef struct typedef struct
{ {
/* /*
* Our reader as assigned by the visualizer system. * Our reader as assigned by the visualizer system.
*/ */
SpCaptureReader *reader; SysprofCaptureReader *reader;
/* /*
* An array of LineInfo which contains information about the counters * An array of LineInfo which contains information about the counters
@ -70,7 +70,7 @@ typedef struct
guint y_lower_set : 1; guint y_lower_set : 1;
guint y_upper_set : 1; guint y_upper_set : 1;
} SpLineVisualizerRowPrivate; } SysprofLineVisualizerRowPrivate;
typedef struct typedef struct
{ {
@ -84,7 +84,7 @@ typedef struct
typedef struct typedef struct
{ {
SpCaptureCursor *cursor; SysprofCaptureCursor *cursor;
GArray *lines; GArray *lines;
PointCache *cache; PointCache *cache;
gint64 begin_time; gint64 begin_time;
@ -95,13 +95,13 @@ typedef struct
guint y_upper_set : 1; guint y_upper_set : 1;
} LoadData; } LoadData;
G_DEFINE_TYPE_WITH_PRIVATE (SpLineVisualizerRow, sp_line_visualizer_row, SP_TYPE_VISUALIZER_ROW) G_DEFINE_TYPE_WITH_PRIVATE (SysprofLineVisualizerRow, sysprof_line_visualizer_row, SYSPROF_TYPE_VISUALIZER_ROW)
static void sp_line_visualizer_row_load_data_async (SpLineVisualizerRow *self, static void sysprof_line_visualizer_row_load_data_async (SysprofLineVisualizerRow *self,
GCancellable *cancellable, GCancellable *cancellable,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data); gpointer user_data);
static PointCache *sp_line_visualizer_row_load_data_finish (SpLineVisualizerRow *self, static PointCache *sysprof_line_visualizer_row_load_data_finish (SysprofLineVisualizerRow *self,
GAsyncResult *result, GAsyncResult *result,
GError **error); GError **error);
@ -123,7 +123,7 @@ load_data_free (gpointer data)
if (load != NULL) if (load != NULL)
{ {
g_clear_pointer (&load->lines, g_array_unref); g_clear_pointer (&load->lines, g_array_unref);
g_clear_pointer (&load->cursor, sp_capture_cursor_unref); g_clear_pointer (&load->cursor, sysprof_capture_cursor_unref);
g_clear_pointer (&load->cache, point_cache_unref); g_clear_pointer (&load->cache, point_cache_unref);
g_slice_free (LoadData, load); g_slice_free (LoadData, load);
} }
@ -142,23 +142,23 @@ copy_array (GArray *ar)
} }
static gboolean static gboolean
sp_line_visualizer_row_draw (GtkWidget *widget, sysprof_line_visualizer_row_draw (GtkWidget *widget,
cairo_t *cr) cairo_t *cr)
{ {
SpLineVisualizerRow *self = (SpLineVisualizerRow *)widget; SysprofLineVisualizerRow *self = (SysprofLineVisualizerRow *)widget;
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
GtkStyleContext *style_context; GtkStyleContext *style_context;
GtkStateFlags flags; GtkStateFlags flags;
GtkAllocation alloc; GtkAllocation alloc;
GdkRGBA foreground; GdkRGBA foreground;
gboolean ret; gboolean ret;
g_assert (SP_IS_LINE_VISUALIZER_ROW (widget)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (widget));
g_assert (cr != NULL); g_assert (cr != NULL);
gtk_widget_get_allocation (widget, &alloc); gtk_widget_get_allocation (widget, &alloc);
ret = GTK_WIDGET_CLASS (sp_line_visualizer_row_parent_class)->draw (widget, cr); ret = GTK_WIDGET_CLASS (sysprof_line_visualizer_row_parent_class)->draw (widget, cr);
if (priv->cache == NULL) if (priv->cache == NULL)
return ret; return ret;
@ -169,7 +169,7 @@ sp_line_visualizer_row_draw (GtkWidget *widget,
for (guint line = 0; line < priv->lines->len; line++) for (guint line = 0; line < priv->lines->len; line++)
{ {
g_autofree SpVisualizerRowAbsolutePoint *points = NULL; g_autofree SysprofVisualizerRowAbsolutePoint *points = NULL;
const LineInfo *line_info = &g_array_index (priv->lines, LineInfo, line); const LineInfo *line_info = &g_array_index (priv->lines, LineInfo, line);
const Point *fpoints; const Point *fpoints;
guint n_fpoints = 0; guint n_fpoints = 0;
@ -182,10 +182,10 @@ sp_line_visualizer_row_draw (GtkWidget *widget,
gdouble last_x; gdouble last_x;
gdouble last_y; gdouble last_y;
points = g_new0 (SpVisualizerRowAbsolutePoint, n_fpoints); points = g_new0 (SysprofVisualizerRowAbsolutePoint, n_fpoints);
sp_visualizer_row_translate_points (SP_VISUALIZER_ROW (self), sysprof_visualizer_row_translate_points (SYSPROF_VISUALIZER_ROW (self),
(const SpVisualizerRowRelativePoint *)fpoints, (const SysprofVisualizerRowRelativePoint *)fpoints,
n_fpoints, n_fpoints,
points, points,
n_fpoints); n_fpoints);
@ -244,18 +244,18 @@ sp_line_visualizer_row_draw (GtkWidget *widget,
} }
static void static void
sp_line_visualizer_row_load_data_cb (GObject *object, sysprof_line_visualizer_row_load_data_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
SpLineVisualizerRow *self = (SpLineVisualizerRow *)object; SysprofLineVisualizerRow *self = (SysprofLineVisualizerRow *)object;
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_autoptr(GError) error = NULL; g_autoptr(GError) error = NULL;
g_autoptr(PointCache) cache = NULL; g_autoptr(PointCache) cache = NULL;
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
cache = sp_line_visualizer_row_load_data_finish (self, result, &error); cache = sysprof_line_visualizer_row_load_data_finish (self, result, &error);
if (cache == NULL) if (cache == NULL)
{ {
@ -270,20 +270,20 @@ sp_line_visualizer_row_load_data_cb (GObject *object,
} }
static gboolean static gboolean
sp_line_visualizer_row_do_reload (gpointer data) sysprof_line_visualizer_row_do_reload (gpointer data)
{ {
SpLineVisualizerRow *self = data; SysprofLineVisualizerRow *self = data;
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
priv->queued_load = 0; priv->queued_load = 0;
if (priv->reader != NULL) if (priv->reader != NULL)
{ {
sp_line_visualizer_row_load_data_async (self, sysprof_line_visualizer_row_load_data_async (self,
NULL, NULL,
sp_line_visualizer_row_load_data_cb, sysprof_line_visualizer_row_load_data_cb,
NULL); NULL);
} }
@ -291,54 +291,54 @@ sp_line_visualizer_row_do_reload (gpointer data)
} }
static void static void
sp_line_visualizer_row_queue_reload (SpLineVisualizerRow *self) sysprof_line_visualizer_row_queue_reload (SysprofLineVisualizerRow *self)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
if (priv->queued_load == 0) if (priv->queued_load == 0)
{ {
priv->queued_load = gdk_threads_add_idle_full (G_PRIORITY_LOW, priv->queued_load = gdk_threads_add_idle_full (G_PRIORITY_LOW,
sp_line_visualizer_row_do_reload, sysprof_line_visualizer_row_do_reload,
self, self,
NULL); NULL);
} }
} }
static void static void
sp_line_visualizer_row_set_reader (SpVisualizerRow *row, sysprof_line_visualizer_row_set_reader (SysprofVisualizerRow *row,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpLineVisualizerRow *self = (SpLineVisualizerRow *)row; SysprofLineVisualizerRow *self = (SysprofLineVisualizerRow *)row;
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
if (priv->reader != reader) if (priv->reader != reader)
{ {
if (priv->reader != NULL) if (priv->reader != NULL)
{ {
sp_capture_reader_unref (priv->reader); sysprof_capture_reader_unref (priv->reader);
priv->reader = NULL; priv->reader = NULL;
} }
if (reader != NULL) if (reader != NULL)
priv->reader = sp_capture_reader_ref (reader); priv->reader = sysprof_capture_reader_ref (reader);
sp_line_visualizer_row_queue_reload (self); sysprof_line_visualizer_row_queue_reload (self);
} }
} }
static void static void
sp_line_visualizer_row_finalize (GObject *object) sysprof_line_visualizer_row_finalize (GObject *object)
{ {
SpLineVisualizerRow *self = (SpLineVisualizerRow *)object; SysprofLineVisualizerRow *self = (SysprofLineVisualizerRow *)object;
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_clear_pointer (&priv->lines, g_array_unref); g_clear_pointer (&priv->lines, g_array_unref);
g_clear_pointer (&priv->cache, point_cache_unref); g_clear_pointer (&priv->cache, point_cache_unref);
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
if (priv->queued_load != 0) if (priv->queued_load != 0)
{ {
@ -346,17 +346,17 @@ sp_line_visualizer_row_finalize (GObject *object)
priv->queued_load = 0; priv->queued_load = 0;
} }
G_OBJECT_CLASS (sp_line_visualizer_row_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_line_visualizer_row_parent_class)->finalize (object);
} }
static void static void
sp_line_visualizer_row_get_property (GObject *object, sysprof_line_visualizer_row_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpLineVisualizerRow *self = SP_LINE_VISUALIZER_ROW (object); SysprofLineVisualizerRow *self = SYSPROF_LINE_VISUALIZER_ROW (object);
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -378,13 +378,13 @@ sp_line_visualizer_row_get_property (GObject *object,
} }
static void static void
sp_line_visualizer_row_set_property (GObject *object, sysprof_line_visualizer_row_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpLineVisualizerRow *self = SP_LINE_VISUALIZER_ROW (object); SysprofLineVisualizerRow *self = SYSPROF_LINE_VISUALIZER_ROW (object);
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -410,19 +410,19 @@ sp_line_visualizer_row_set_property (GObject *object,
} }
static void static void
sp_line_visualizer_row_class_init (SpLineVisualizerRowClass *klass) sysprof_line_visualizer_row_class_init (SysprofLineVisualizerRowClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
SpVisualizerRowClass *visualizer_class = SP_VISUALIZER_ROW_CLASS (klass); SysprofVisualizerRowClass *visualizer_class = SYSPROF_VISUALIZER_ROW_CLASS (klass);
object_class->finalize = sp_line_visualizer_row_finalize; object_class->finalize = sysprof_line_visualizer_row_finalize;
object_class->get_property = sp_line_visualizer_row_get_property; object_class->get_property = sysprof_line_visualizer_row_get_property;
object_class->set_property = sp_line_visualizer_row_set_property; object_class->set_property = sysprof_line_visualizer_row_set_property;
widget_class->draw = sp_line_visualizer_row_draw; widget_class->draw = sysprof_line_visualizer_row_draw;
visualizer_class->set_reader = sp_line_visualizer_row_set_reader; visualizer_class->set_reader = sysprof_line_visualizer_row_set_reader;
properties [PROP_TITLE] = properties [PROP_TITLE] =
g_param_spec_string ("title", g_param_spec_string ("title",
@ -453,9 +453,9 @@ sp_line_visualizer_row_class_init (SpLineVisualizerRowClass *klass)
} }
static void static void
sp_line_visualizer_row_init (SpLineVisualizerRow *self) sysprof_line_visualizer_row_init (SysprofLineVisualizerRow *self)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
PangoAttrList *attrs = pango_attr_list_new (); PangoAttrList *attrs = pango_attr_list_new ();
priv->lines = g_array_new (FALSE, FALSE, sizeof (LineInfo)); priv->lines = g_array_new (FALSE, FALSE, sizeof (LineInfo));
@ -474,14 +474,14 @@ sp_line_visualizer_row_init (SpLineVisualizerRow *self)
} }
void void
sp_line_visualizer_row_add_counter (SpLineVisualizerRow *self, sysprof_line_visualizer_row_add_counter (SysprofLineVisualizerRow *self,
guint counter_id, guint counter_id,
const GdkRGBA *color) const GdkRGBA *color)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
LineInfo line_info = { 0 }; LineInfo line_info = { 0 };
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
g_assert (priv->lines != NULL); g_assert (priv->lines != NULL);
line_info.id = counter_id; line_info.id = counter_id;
@ -500,18 +500,18 @@ sp_line_visualizer_row_add_counter (SpLineVisualizerRow *self,
g_array_append_val (priv->lines, line_info); g_array_append_val (priv->lines, line_info);
if (SP_LINE_VISUALIZER_ROW_GET_CLASS (self)->counter_added) if (SYSPROF_LINE_VISUALIZER_ROW_GET_CLASS (self)->counter_added)
SP_LINE_VISUALIZER_ROW_GET_CLASS (self)->counter_added (self, counter_id); SYSPROF_LINE_VISUALIZER_ROW_GET_CLASS (self)->counter_added (self, counter_id);
sp_line_visualizer_row_queue_reload (self); sysprof_line_visualizer_row_queue_reload (self);
} }
void void
sp_line_visualizer_row_clear (SpLineVisualizerRow *self) sysprof_line_visualizer_row_clear (SysprofLineVisualizerRow *self)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_return_if_fail (SP_IS_LINE_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
if (priv->lines->len > 0) if (priv->lines->len > 0)
g_array_remove_range (priv->lines, 0, priv->lines->len); g_array_remove_range (priv->lines, 0, priv->lines->len);
@ -542,7 +542,7 @@ counter_type (LoadData *load,
* We need to keep some information on the counter (by id) so that we * We need to keep some information on the counter (by id) so that we
* can track the counters type (which is a 1-byte type id). * can track the counters type (which is a 1-byte type id).
*/ */
return SP_CAPTURE_COUNTER_DOUBLE; return SYSPROF_CAPTURE_COUNTER_DOUBLE;
} }
static inline gdouble static inline gdouble
@ -570,24 +570,24 @@ calc_y_int64 (gint64 lower,
} }
static gboolean static gboolean
sp_line_visualizer_row_load_data_frame_cb (const SpCaptureFrame *frame, sysprof_line_visualizer_row_load_data_frame_cb (const SysprofCaptureFrame *frame,
gpointer user_data) gpointer user_data)
{ {
LoadData *load = user_data; LoadData *load = user_data;
g_assert (frame != NULL); g_assert (frame != NULL);
g_assert (frame->type == SP_CAPTURE_FRAME_CTRSET || g_assert (frame->type == SYSPROF_CAPTURE_FRAME_CTRSET ||
frame->type == SP_CAPTURE_FRAME_CTRDEF); frame->type == SYSPROF_CAPTURE_FRAME_CTRDEF);
g_assert (load != NULL); g_assert (load != NULL);
if (frame->type == SP_CAPTURE_FRAME_CTRSET) if (frame->type == SYSPROF_CAPTURE_FRAME_CTRSET)
{ {
const SpCaptureFrameCounterSet *set = (SpCaptureFrameCounterSet *)frame; const SysprofCaptureFrameCounterSet *set = (SysprofCaptureFrameCounterSet *)frame;
gdouble x = calc_x (load->begin_time, load->end_time, frame->time); gdouble x = calc_x (load->begin_time, load->end_time, frame->time);
for (guint i = 0; i < set->n_values; i++) for (guint i = 0; i < set->n_values; i++)
{ {
const SpCaptureCounterValues *group = &set->values[i]; const SysprofCaptureCounterValues *group = &set->values[i];
for (guint j = 0; j < G_N_ELEMENTS (group->ids); j++) for (guint j = 0; j < G_N_ELEMENTS (group->ids); j++)
{ {
@ -597,7 +597,7 @@ sp_line_visualizer_row_load_data_frame_cb (const SpCaptureFrame *frame,
{ {
gdouble y; gdouble y;
if (counter_type (load, counter_id) == SP_CAPTURE_COUNTER_DOUBLE) if (counter_type (load, counter_id) == SYSPROF_CAPTURE_COUNTER_DOUBLE)
y = calc_y_double (load->y_lower, load->y_upper, group->values[j].vdbl); y = calc_y_double (load->y_lower, load->y_upper, group->values[j].vdbl);
else else
y = calc_y_int64 (load->y_lower, load->y_upper, group->values[j].v64); y = calc_y_int64 (load->y_lower, load->y_upper, group->values[j].v64);
@ -612,25 +612,25 @@ sp_line_visualizer_row_load_data_frame_cb (const SpCaptureFrame *frame,
} }
static gboolean static gboolean
sp_line_visualizer_row_load_data_range_cb (const SpCaptureFrame *frame, sysprof_line_visualizer_row_load_data_range_cb (const SysprofCaptureFrame *frame,
gpointer user_data) gpointer user_data)
{ {
LoadData *load = user_data; LoadData *load = user_data;
g_assert (frame != NULL); g_assert (frame != NULL);
g_assert (frame->type == SP_CAPTURE_FRAME_CTRSET || g_assert (frame->type == SYSPROF_CAPTURE_FRAME_CTRSET ||
frame->type == SP_CAPTURE_FRAME_CTRDEF); frame->type == SYSPROF_CAPTURE_FRAME_CTRDEF);
g_assert (load != NULL); g_assert (load != NULL);
g_assert (load->y_upper_set == FALSE || g_assert (load->y_upper_set == FALSE ||
load->y_lower_set == FALSE); load->y_lower_set == FALSE);
if (frame->type == SP_CAPTURE_FRAME_CTRSET) if (frame->type == SYSPROF_CAPTURE_FRAME_CTRSET)
{ {
const SpCaptureFrameCounterSet *set = (SpCaptureFrameCounterSet *)frame; const SysprofCaptureFrameCounterSet *set = (SysprofCaptureFrameCounterSet *)frame;
for (guint i = 0; i < set->n_values; i++) for (guint i = 0; i < set->n_values; i++)
{ {
const SpCaptureCounterValues *group = &set->values[i]; const SysprofCaptureCounterValues *group = &set->values[i];
for (guint j = 0; j < G_N_ELEMENTS (group->ids); j++) for (guint j = 0; j < G_N_ELEMENTS (group->ids); j++)
{ {
@ -640,7 +640,7 @@ sp_line_visualizer_row_load_data_range_cb (const SpCaptureFrame *frame,
{ {
gdouble y; gdouble y;
if (counter_type (load, counter_id) == SP_CAPTURE_COUNTER_DOUBLE) if (counter_type (load, counter_id) == SYSPROF_CAPTURE_COUNTER_DOUBLE)
y = group->values[j].vdbl; y = group->values[j].vdbl;
else else
y = group->values[j].v64; y = group->values[j].v64;
@ -659,7 +659,7 @@ sp_line_visualizer_row_load_data_range_cb (const SpCaptureFrame *frame,
} }
static void static void
sp_line_visualizer_row_load_data_worker (GTask *task, sysprof_line_visualizer_row_load_data_worker (GTask *task,
gpointer source_object, gpointer source_object,
gpointer task_data, gpointer task_data,
GCancellable *cancellable) GCancellable *cancellable)
@ -668,7 +668,7 @@ sp_line_visualizer_row_load_data_worker (GTask *task,
g_autoptr(GArray) counter_ids = NULL; g_autoptr(GArray) counter_ids = NULL;
g_assert (G_IS_TASK (task)); g_assert (G_IS_TASK (task));
g_assert (SP_IS_LINE_VISUALIZER_ROW (source_object)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (source_object));
g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
counter_ids = g_array_new (FALSE, FALSE, sizeof (guint)); counter_ids = g_array_new (FALSE, FALSE, sizeof (guint));
@ -679,41 +679,41 @@ sp_line_visualizer_row_load_data_worker (GTask *task,
g_array_append_val (counter_ids, line_info->id); g_array_append_val (counter_ids, line_info->id);
} }
sp_capture_cursor_add_condition (load->cursor, sysprof_capture_cursor_add_condition (load->cursor,
sp_capture_condition_new_where_counter_in (counter_ids->len, sysprof_capture_condition_new_where_counter_in (counter_ids->len,
(guint *)(gpointer)counter_ids->data)); (guint *)(gpointer)counter_ids->data));
/* If y boundaries are not set, we need to discover them by scaning the data. */ /* If y boundaries are not set, we need to discover them by scaning the data. */
if (!load->y_lower_set || !load->y_upper_set) if (!load->y_lower_set || !load->y_upper_set)
{ {
sp_capture_cursor_foreach (load->cursor, sp_line_visualizer_row_load_data_range_cb, load); sysprof_capture_cursor_foreach (load->cursor, sysprof_line_visualizer_row_load_data_range_cb, load);
sp_capture_cursor_reset (load->cursor); sysprof_capture_cursor_reset (load->cursor);
/* Add extra boundary for some space above the graph line */ /* Add extra boundary for some space above the graph line */
if (G_MAXDOUBLE - load->y_upper > (load->y_upper * .25)) if (G_MAXDOUBLE - load->y_upper > (load->y_upper * .25))
load->y_upper *= 1.25; load->y_upper *= 1.25;
} }
sp_capture_cursor_foreach (load->cursor, sp_line_visualizer_row_load_data_frame_cb, load); sysprof_capture_cursor_foreach (load->cursor, sysprof_line_visualizer_row_load_data_frame_cb, load);
g_task_return_pointer (task, g_steal_pointer (&load->cache), (GDestroyNotify)point_cache_unref); g_task_return_pointer (task, g_steal_pointer (&load->cache), (GDestroyNotify)point_cache_unref);
} }
static void static void
sp_line_visualizer_row_load_data_async (SpLineVisualizerRow *self, sysprof_line_visualizer_row_load_data_async (SysprofLineVisualizerRow *self,
GCancellable *cancellable, GCancellable *cancellable,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_autoptr(GTask) task = NULL; g_autoptr(GTask) task = NULL;
LoadData *load; LoadData *load;
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
task = g_task_new (self, cancellable, callback, user_data); task = g_task_new (self, cancellable, callback, user_data);
g_task_set_priority (task, G_PRIORITY_LOW); g_task_set_priority (task, G_PRIORITY_LOW);
g_task_set_source_tag (task, sp_line_visualizer_row_load_data_async); g_task_set_source_tag (task, sysprof_line_visualizer_row_load_data_async);
if (priv->reader == NULL) if (priv->reader == NULL)
{ {
@ -730,9 +730,9 @@ sp_line_visualizer_row_load_data_async (SpLineVisualizerRow *self,
load->y_upper = priv->y_upper; load->y_upper = priv->y_upper;
load->y_lower_set = priv->y_lower_set; load->y_lower_set = priv->y_lower_set;
load->y_upper_set = priv->y_upper_set; load->y_upper_set = priv->y_upper_set;
load->begin_time = sp_capture_reader_get_start_time (priv->reader); load->begin_time = sysprof_capture_reader_get_start_time (priv->reader);
load->end_time = sp_capture_reader_get_end_time (priv->reader); load->end_time = sysprof_capture_reader_get_end_time (priv->reader);
load->cursor = sp_capture_cursor_new (priv->reader); load->cursor = sysprof_capture_cursor_new (priv->reader);
load->lines = copy_array (priv->lines); load->lines = copy_array (priv->lines);
for (guint i = 0; i < load->lines->len; i++) for (guint i = 0; i < load->lines->len; i++)
@ -743,18 +743,18 @@ sp_line_visualizer_row_load_data_async (SpLineVisualizerRow *self,
} }
g_task_set_task_data (task, load, load_data_free); g_task_set_task_data (task, load, load_data_free);
g_task_run_in_thread (task, sp_line_visualizer_row_load_data_worker); g_task_run_in_thread (task, sysprof_line_visualizer_row_load_data_worker);
} }
static PointCache * static PointCache *
sp_line_visualizer_row_load_data_finish (SpLineVisualizerRow *self, sysprof_line_visualizer_row_load_data_finish (SysprofLineVisualizerRow *self,
GAsyncResult *result, GAsyncResult *result,
GError **error) GError **error)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
LoadData *state; LoadData *state;
g_assert (SP_IS_LINE_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
g_assert (G_IS_TASK (result)); g_assert (G_IS_TASK (result));
state = g_task_get_task_data (G_TASK (result)); state = g_task_get_task_data (G_TASK (result));
@ -775,13 +775,13 @@ sp_line_visualizer_row_load_data_finish (SpLineVisualizerRow *self,
} }
void void
sp_line_visualizer_row_set_line_width (SpLineVisualizerRow *self, sysprof_line_visualizer_row_set_line_width (SysprofLineVisualizerRow *self,
guint counter_id, guint counter_id,
gdouble width) gdouble width)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_return_if_fail (SP_IS_LINE_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
for (guint i = 0; i < priv->lines->len; i++) for (guint i = 0; i < priv->lines->len; i++)
{ {
@ -790,20 +790,20 @@ sp_line_visualizer_row_set_line_width (SpLineVisualizerRow *self,
if (info->id == counter_id) if (info->id == counter_id)
{ {
info->line_width = width; info->line_width = width;
sp_line_visualizer_row_queue_reload (self); sysprof_line_visualizer_row_queue_reload (self);
break; break;
} }
} }
} }
void void
sp_line_visualizer_row_set_fill (SpLineVisualizerRow *self, sysprof_line_visualizer_row_set_fill (SysprofLineVisualizerRow *self,
guint counter_id, guint counter_id,
const GdkRGBA *color) const GdkRGBA *color)
{ {
SpLineVisualizerRowPrivate *priv = sp_line_visualizer_row_get_instance_private (self); SysprofLineVisualizerRowPrivate *priv = sysprof_line_visualizer_row_get_instance_private (self);
g_return_if_fail (SP_IS_LINE_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_LINE_VISUALIZER_ROW (self));
for (guint i = 0; i < priv->lines->len; i++) for (guint i = 0; i < priv->lines->len; i++)
{ {
@ -814,7 +814,7 @@ sp_line_visualizer_row_set_fill (SpLineVisualizerRow *self,
info->fill = !!color; info->fill = !!color;
if (color != NULL) if (color != NULL)
info->background = *color; info->background = *color;
sp_line_visualizer_row_queue_reload (self); sysprof_line_visualizer_row_queue_reload (self);
break; break;
} }
} }

View File

@ -1,4 +1,4 @@
/* sp-line-visualizer-row.h /* sysprof-line-visualizer-row.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -20,21 +20,21 @@
#pragma once #pragma once
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_LINE_VISUALIZER_ROW (sp_line_visualizer_row_get_type()) #define SYSPROF_TYPE_LINE_VISUALIZER_ROW (sysprof_line_visualizer_row_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpLineVisualizerRow, sp_line_visualizer_row, SP, LINE_VISUALIZER_ROW, SpVisualizerRow) G_DECLARE_DERIVABLE_TYPE (SysprofLineVisualizerRow, sysprof_line_visualizer_row, SYSPROF, LINE_VISUALIZER_ROW, SysprofVisualizerRow)
struct _SpLineVisualizerRowClass struct _SysprofLineVisualizerRowClass
{ {
SpVisualizerRowClass parent_class; SysprofVisualizerRowClass parent_class;
void (*counter_added) (SpLineVisualizerRow *self, void (*counter_added) (SysprofLineVisualizerRow *self,
guint counter_id); guint counter_id);
/*< private >*/ /*< private >*/
@ -42,19 +42,19 @@ struct _SpLineVisualizerRowClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_line_visualizer_row_new (void); GtkWidget *sysprof_line_visualizer_row_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_line_visualizer_row_clear (SpLineVisualizerRow *self); void sysprof_line_visualizer_row_clear (SysprofLineVisualizerRow *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_line_visualizer_row_add_counter (SpLineVisualizerRow *self, void sysprof_line_visualizer_row_add_counter (SysprofLineVisualizerRow *self,
guint counter_id, guint counter_id,
const GdkRGBA *color); const GdkRGBA *color);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_line_visualizer_row_set_line_width (SpLineVisualizerRow *self, void sysprof_line_visualizer_row_set_line_width (SysprofLineVisualizerRow *self,
guint counter_id, guint counter_id,
gdouble width); gdouble width);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_line_visualizer_row_set_fill (SpLineVisualizerRow *self, void sysprof_line_visualizer_row_set_fill (SysprofLineVisualizerRow *self,
guint counter_id, guint counter_id,
const GdkRGBA *color); const GdkRGBA *color);

View File

@ -1,4 +1,4 @@
/* sp-mark-visualizer-row.c /* sysprof-mark-visualizer-row.c
* *
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com> * Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,21 +18,21 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-mark-visualizer-row" #define G_LOG_DOMAIN "sysprof-mark-visualizer-row"
#include "config.h" #include "config.h"
#include "sp-capture-condition.h" #include "sysprof-capture-condition.h"
#include "sp-capture-cursor.h" #include "sysprof-capture-cursor.h"
#include "rectangles.h" #include "rectangles.h"
#include "sp-mark-visualizer-row.h" #include "sysprof-mark-visualizer-row.h"
typedef struct typedef struct
{ {
/* /*
* Our reader as assigned by the visualizer system. * Our reader as assigned by the visualizer system.
*/ */
SpCaptureReader *reader; SysprofCaptureReader *reader;
/* /*
* The group we care about for displaying marks. The idea is that we only * The group we care about for displaying marks. The idea is that we only
@ -51,12 +51,12 @@ typedef struct
* Child widget to display the label in the upper corner. * Child widget to display the label in the upper corner.
*/ */
GtkLabel *label; GtkLabel *label;
} SpMarkVisualizerRowPrivate; } SysprofMarkVisualizerRowPrivate;
typedef struct typedef struct
{ {
gchar *group; gchar *group;
SpCaptureCursor *cursor; SysprofCaptureCursor *cursor;
Rectangles *rects; Rectangles *rects;
GHashTable *inferred_rects; GHashTable *inferred_rects;
} BuildState; } BuildState;
@ -74,7 +74,7 @@ enum {
N_PROPS N_PROPS
}; };
G_DEFINE_TYPE_WITH_PRIVATE (SpMarkVisualizerRow, sp_mark_visualizer_row, SP_TYPE_VISUALIZER_ROW) G_DEFINE_TYPE_WITH_PRIVATE (SysprofMarkVisualizerRow, sysprof_mark_visualizer_row, SYSPROF_TYPE_VISUALIZER_ROW)
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
@ -116,7 +116,7 @@ build_state_free (BuildState *state)
*/ */
static gboolean static gboolean
process_gpu_mark (BuildState *state, process_gpu_mark (BuildState *state,
const SpCaptureMark *mark) const SysprofCaptureMark *mark)
{ {
InferredRect *rect = g_hash_table_lookup (state->inferred_rects, InferredRect *rect = g_hash_table_lookup (state->inferred_rects,
mark->message); mark->message);
@ -167,14 +167,14 @@ process_gpu_mark (BuildState *state,
static gboolean static gboolean
sp_mark_visualizer_row_add_rect (const SpCaptureFrame *frame, sysprof_mark_visualizer_row_add_rect (const SysprofCaptureFrame *frame,
gpointer user_data) gpointer user_data)
{ {
BuildState *state = user_data; BuildState *state = user_data;
const SpCaptureMark *mark = (const SpCaptureMark *)frame; const SysprofCaptureMark *mark = (const SysprofCaptureMark *)frame;
g_assert (frame != NULL); g_assert (frame != NULL);
g_assert (frame->type == SP_CAPTURE_FRAME_MARK); g_assert (frame->type == SYSPROF_CAPTURE_FRAME_MARK);
g_assert (state != NULL); g_assert (state != NULL);
g_assert (state->rects != NULL); g_assert (state->rects != NULL);
@ -195,7 +195,7 @@ sp_mark_visualizer_row_add_rect (const SpCaptureFrame *frame,
} }
static void static void
sp_mark_visualizer_row_worker (GTask *task, sysprof_mark_visualizer_row_worker (GTask *task,
gpointer source_object, gpointer source_object,
gpointer task_data, gpointer task_data,
GCancellable *cancellable) GCancellable *cancellable)
@ -206,11 +206,11 @@ sp_mark_visualizer_row_worker (GTask *task,
gint64 end_time; gint64 end_time;
g_assert (G_IS_TASK (task)); g_assert (G_IS_TASK (task));
g_assert (SP_IS_MARK_VISUALIZER_ROW (source_object)); g_assert (SYSPROF_IS_MARK_VISUALIZER_ROW (source_object));
g_assert (state != NULL); g_assert (state != NULL);
g_assert (state->cursor != NULL); g_assert (state->cursor != NULL);
sp_capture_cursor_foreach (state->cursor, sp_mark_visualizer_row_add_rect, state); sysprof_capture_cursor_foreach (state->cursor, sysprof_mark_visualizer_row_add_rect, state);
/* If any inferred rects are left incomplete, just drop them in as /* If any inferred rects are left incomplete, just drop them in as
* point events for now. * point events for now.
@ -224,22 +224,22 @@ sp_mark_visualizer_row_worker (GTask *task,
} }
g_hash_table_remove_all (state->inferred_rects); g_hash_table_remove_all (state->inferred_rects);
end_time = sp_capture_reader_get_end_time (sp_capture_cursor_get_reader (state->cursor)); end_time = sysprof_capture_reader_get_end_time (sysprof_capture_cursor_get_reader (state->cursor));
rectangles_set_end_time (state->rects, end_time); rectangles_set_end_time (state->rects, end_time);
g_task_return_pointer (task, g_steal_pointer (&state->rects), (GDestroyNotify)rectangles_free); g_task_return_pointer (task, g_steal_pointer (&state->rects), (GDestroyNotify)rectangles_free);
} }
static gboolean static gboolean
sp_mark_visualizer_row_query_tooltip (GtkWidget *widget, sysprof_mark_visualizer_row_query_tooltip (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
gboolean keyboard_mode, gboolean keyboard_mode,
GtkTooltip *tooltip) GtkTooltip *tooltip)
{ {
SpMarkVisualizerRow *self = (SpMarkVisualizerRow *)widget; SysprofMarkVisualizerRow *self = (SysprofMarkVisualizerRow *)widget;
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_assert (SP_IS_MARK_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_MARK_VISUALIZER_ROW (self));
if (priv->rectangles == NULL) if (priv->rectangles == NULL)
return FALSE; return FALSE;
@ -248,23 +248,23 @@ sp_mark_visualizer_row_query_tooltip (GtkWidget *widget,
} }
static gboolean static gboolean
sp_mark_visualizer_row_draw (GtkWidget *widget, sysprof_mark_visualizer_row_draw (GtkWidget *widget,
cairo_t *cr) cairo_t *cr)
{ {
SpMarkVisualizerRow *self = (SpMarkVisualizerRow *)widget; SysprofMarkVisualizerRow *self = (SysprofMarkVisualizerRow *)widget;
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
GtkStyleContext *style_context; GtkStyleContext *style_context;
GtkStateFlags flags; GtkStateFlags flags;
GdkRGBA foreground; GdkRGBA foreground;
GtkAllocation alloc; GtkAllocation alloc;
gboolean ret; gboolean ret;
g_assert (SP_IS_MARK_VISUALIZER_ROW (widget)); g_assert (SYSPROF_IS_MARK_VISUALIZER_ROW (widget));
g_assert (cr != NULL); g_assert (cr != NULL);
gtk_widget_get_allocation (widget, &alloc); gtk_widget_get_allocation (widget, &alloc);
ret = GTK_WIDGET_CLASS (sp_mark_visualizer_row_parent_class)->draw (widget, cr); ret = GTK_WIDGET_CLASS (sysprof_mark_visualizer_row_parent_class)->draw (widget, cr);
if (priv->rectangles == NULL) if (priv->rectangles == NULL)
return ret; return ret;
@ -283,10 +283,10 @@ data_load_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
SpMarkVisualizerRow *self = (SpMarkVisualizerRow *)object; SysprofMarkVisualizerRow *self = (SysprofMarkVisualizerRow *)object;
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_assert (SP_IS_MARK_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_MARK_VISUALIZER_ROW (self));
g_assert (G_IS_TASK (result)); g_assert (G_IS_TASK (result));
g_clear_pointer (&priv->rectangles, rectangles_free); g_clear_pointer (&priv->rectangles, rectangles_free);
@ -295,21 +295,21 @@ data_load_cb (GObject *object,
} }
static void static void
sp_mark_visualizer_row_reload (SpMarkVisualizerRow *self) sysprof_mark_visualizer_row_reload (SysprofMarkVisualizerRow *self)
{ {
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_autoptr(SpCaptureCursor) cursor = NULL; g_autoptr(SysprofCaptureCursor) cursor = NULL;
g_autoptr(GTask) task = NULL; g_autoptr(GTask) task = NULL;
SpCaptureCondition *condition; SysprofCaptureCondition *condition;
BuildState *state; BuildState *state;
g_assert (SP_IS_MARK_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_MARK_VISUALIZER_ROW (self));
g_clear_pointer (&priv->rectangles, rectangles_free); g_clear_pointer (&priv->rectangles, rectangles_free);
condition = sp_capture_condition_new_where_type_in (1, (SpCaptureFrameType[]) { SP_CAPTURE_FRAME_MARK }); condition = sysprof_capture_condition_new_where_type_in (1, (SysprofCaptureFrameType[]) { SYSPROF_CAPTURE_FRAME_MARK });
cursor = sp_capture_cursor_new (priv->reader); cursor = sysprof_capture_cursor_new (priv->reader);
sp_capture_cursor_add_condition (cursor, g_steal_pointer (&condition)); sysprof_capture_cursor_add_condition (cursor, g_steal_pointer (&condition));
state = g_slice_new0 (BuildState); state = g_slice_new0 (BuildState);
state->inferred_rects = g_hash_table_new_full (g_str_hash, g_str_equal, state->inferred_rects = g_hash_table_new_full (g_str_hash, g_str_equal,
@ -317,57 +317,57 @@ sp_mark_visualizer_row_reload (SpMarkVisualizerRow *self)
(GDestroyNotify)free_inferred_rect); (GDestroyNotify)free_inferred_rect);
state->group = g_strdup (priv->group); state->group = g_strdup (priv->group);
state->cursor = g_steal_pointer (&cursor); state->cursor = g_steal_pointer (&cursor);
state->rects = rectangles_new (sp_capture_reader_get_start_time (priv->reader), state->rects = rectangles_new (sysprof_capture_reader_get_start_time (priv->reader),
sp_capture_reader_get_end_time (priv->reader)); sysprof_capture_reader_get_end_time (priv->reader));
task = g_task_new (self, NULL, data_load_cb, NULL); task = g_task_new (self, NULL, data_load_cb, NULL);
g_task_set_task_data (task, state, (GDestroyNotify)build_state_free); g_task_set_task_data (task, state, (GDestroyNotify)build_state_free);
g_task_run_in_thread (task, sp_mark_visualizer_row_worker); g_task_run_in_thread (task, sysprof_mark_visualizer_row_worker);
} }
static void static void
sp_mark_visualizer_row_set_reader (SpVisualizerRow *row, sysprof_mark_visualizer_row_set_reader (SysprofVisualizerRow *row,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpMarkVisualizerRow *self = (SpMarkVisualizerRow *)row; SysprofMarkVisualizerRow *self = (SysprofMarkVisualizerRow *)row;
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_assert (SP_IS_MARK_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_MARK_VISUALIZER_ROW (self));
if (reader != priv->reader) if (reader != priv->reader)
{ {
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
if (reader != NULL) if (reader != NULL)
priv->reader = sp_capture_reader_ref (reader); priv->reader = sysprof_capture_reader_ref (reader);
sp_mark_visualizer_row_reload (self); sysprof_mark_visualizer_row_reload (self);
} }
} }
static void static void
sp_mark_visualizer_row_finalize (GObject *object) sysprof_mark_visualizer_row_finalize (GObject *object)
{ {
SpMarkVisualizerRow *self = (SpMarkVisualizerRow *)object; SysprofMarkVisualizerRow *self = (SysprofMarkVisualizerRow *)object;
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_clear_pointer (&priv->group, g_free); g_clear_pointer (&priv->group, g_free);
g_clear_pointer (&priv->rectangles, rectangles_free); g_clear_pointer (&priv->rectangles, rectangles_free);
G_OBJECT_CLASS (sp_mark_visualizer_row_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_mark_visualizer_row_parent_class)->finalize (object);
} }
static void static void
sp_mark_visualizer_row_get_property (GObject *object, sysprof_mark_visualizer_row_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpMarkVisualizerRow *self = SP_MARK_VISUALIZER_ROW (object); SysprofMarkVisualizerRow *self = SYSPROF_MARK_VISUALIZER_ROW (object);
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
case PROP_GROUP: case PROP_GROUP:
g_value_set_string (value, sp_mark_visualizer_row_get_group (self)); g_value_set_string (value, sysprof_mark_visualizer_row_get_group (self));
break; break;
case PROP_TITLE: case PROP_TITLE:
@ -380,18 +380,18 @@ sp_mark_visualizer_row_get_property (GObject *object,
} }
static void static void
sp_mark_visualizer_row_set_property (GObject *object, sysprof_mark_visualizer_row_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpMarkVisualizerRow *self = SP_MARK_VISUALIZER_ROW (object); SysprofMarkVisualizerRow *self = SYSPROF_MARK_VISUALIZER_ROW (object);
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
case PROP_GROUP: case PROP_GROUP:
sp_mark_visualizer_row_set_group (self, g_value_get_string (value)); sysprof_mark_visualizer_row_set_group (self, g_value_get_string (value));
break; break;
case PROP_TITLE: case PROP_TITLE:
@ -404,20 +404,20 @@ sp_mark_visualizer_row_set_property (GObject *object,
} }
static void static void
sp_mark_visualizer_row_class_init (SpMarkVisualizerRowClass *klass) sysprof_mark_visualizer_row_class_init (SysprofMarkVisualizerRowClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
SpVisualizerRowClass *visualizer_class = SP_VISUALIZER_ROW_CLASS (klass); SysprofVisualizerRowClass *visualizer_class = SYSPROF_VISUALIZER_ROW_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = sp_mark_visualizer_row_finalize; object_class->finalize = sysprof_mark_visualizer_row_finalize;
object_class->get_property = sp_mark_visualizer_row_get_property; object_class->get_property = sysprof_mark_visualizer_row_get_property;
object_class->set_property = sp_mark_visualizer_row_set_property; object_class->set_property = sysprof_mark_visualizer_row_set_property;
widget_class->draw = sp_mark_visualizer_row_draw; widget_class->draw = sysprof_mark_visualizer_row_draw;
widget_class->query_tooltip = sp_mark_visualizer_row_query_tooltip; widget_class->query_tooltip = sysprof_mark_visualizer_row_query_tooltip;
visualizer_class->set_reader = sp_mark_visualizer_row_set_reader; visualizer_class->set_reader = sysprof_mark_visualizer_row_set_reader;
properties [PROP_GROUP] = properties [PROP_GROUP] =
g_param_spec_string ("group", g_param_spec_string ("group",
@ -437,9 +437,9 @@ sp_mark_visualizer_row_class_init (SpMarkVisualizerRowClass *klass)
} }
static void static void
sp_mark_visualizer_row_init (SpMarkVisualizerRow *self) sysprof_mark_visualizer_row_init (SysprofMarkVisualizerRow *self)
{ {
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
PangoAttrList *attrs = pango_attr_list_new (); PangoAttrList *attrs = pango_attr_list_new ();
gtk_widget_set_has_tooltip (GTK_WIDGET (self), TRUE); gtk_widget_set_has_tooltip (GTK_WIDGET (self), TRUE);
@ -458,28 +458,28 @@ sp_mark_visualizer_row_init (SpMarkVisualizerRow *self)
} }
GtkWidget * GtkWidget *
sp_mark_visualizer_row_new (void) sysprof_mark_visualizer_row_new (void)
{ {
return g_object_new (SP_TYPE_MARK_VISUALIZER_ROW, NULL); return g_object_new (SYSPROF_TYPE_MARK_VISUALIZER_ROW, NULL);
} }
const gchar * const gchar *
sp_mark_visualizer_row_get_group (SpMarkVisualizerRow *self) sysprof_mark_visualizer_row_get_group (SysprofMarkVisualizerRow *self)
{ {
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_return_val_if_fail (SP_IS_MARK_VISUALIZER_ROW (self), NULL); g_return_val_if_fail (SYSPROF_IS_MARK_VISUALIZER_ROW (self), NULL);
return priv->group; return priv->group;
} }
void void
sp_mark_visualizer_row_set_group (SpMarkVisualizerRow *self, sysprof_mark_visualizer_row_set_group (SysprofMarkVisualizerRow *self,
const gchar *group) const gchar *group)
{ {
SpMarkVisualizerRowPrivate *priv = sp_mark_visualizer_row_get_instance_private (self); SysprofMarkVisualizerRowPrivate *priv = sysprof_mark_visualizer_row_get_instance_private (self);
g_return_if_fail (SP_IS_MARK_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_MARK_VISUALIZER_ROW (self));
if (g_strcmp0 (priv->group, group) != 0) if (g_strcmp0 (priv->group, group) != 0)
{ {

View File

@ -1,4 +1,4 @@
/* sp-mark-visualizer-row.h /* sysprof-mark-visualizer-row.h
* *
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com> * Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,30 +20,30 @@
#pragma once #pragma once
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_MARK_VISUALIZER_ROW (sp_mark_visualizer_row_get_type()) #define SYSPROF_TYPE_MARK_VISUALIZER_ROW (sysprof_mark_visualizer_row_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpMarkVisualizerRow, sp_mark_visualizer_row, SP, MARK_VISUALIZER_ROW, SpVisualizerRow) G_DECLARE_DERIVABLE_TYPE (SysprofMarkVisualizerRow, sysprof_mark_visualizer_row, SYSPROF, MARK_VISUALIZER_ROW, SysprofVisualizerRow)
struct _SpMarkVisualizerRowClass struct _SysprofMarkVisualizerRowClass
{ {
SpVisualizerRowClass parent_class; SysprofVisualizerRowClass parent_class;
/*< private >*/ /*< private >*/
gpointer _reserved[16]; gpointer _reserved[16];
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_mark_visualizer_row_new (void); GtkWidget *sysprof_mark_visualizer_row_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
const gchar *sp_mark_visualizer_row_get_group (SpMarkVisualizerRow *self); const gchar *sysprof_mark_visualizer_row_get_group (SysprofMarkVisualizerRow *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_mark_visualizer_row_set_group (SpMarkVisualizerRow *self, void sysprof_mark_visualizer_row_set_group (SysprofMarkVisualizerRow *self,
const gchar *group); const gchar *group);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-model-filter.c /* sysprof-model-filter.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -20,13 +20,13 @@
#include "config.h" #include "config.h"
#include "sp-model-filter.h" #include "sysprof-model-filter.h"
typedef struct typedef struct
{ {
GSequenceIter *child_iter; GSequenceIter *child_iter;
GSequenceIter *filter_iter; GSequenceIter *filter_iter;
} SpModelFilterItem; } SysprofModelFilterItem;
typedef struct typedef struct
{ {
@ -34,7 +34,7 @@ typedef struct
GListModel *child_model; GListModel *child_model;
/* /*
* Both sequences point to the same SpModelFilterItem which * Both sequences point to the same SysprofModelFilterItem which
* contains cross-referencing stable GSequenceIter pointers. * contains cross-referencing stable GSequenceIter pointers.
* The child_seq is considered the "owner" and used to release * The child_seq is considered the "owner" and used to release
* allocated resources. * allocated resources.
@ -46,7 +46,7 @@ typedef struct
* Typical set of callback/closure/free function pointers and data. * Typical set of callback/closure/free function pointers and data.
* Called for child items to determine visibility state. * Called for child items to determine visibility state.
*/ */
SpModelFilterFunc filter_func; SysprofModelFilterFunc filter_func;
gpointer filter_func_data; gpointer filter_func_data;
GDestroyNotify filter_func_data_destroy; GDestroyNotify filter_func_data_destroy;
@ -56,12 +56,12 @@ typedef struct
* that have changed. * that have changed.
*/ */
guint supress_items_changed : 1; guint supress_items_changed : 1;
} SpModelFilterPrivate; } SysprofModelFilterPrivate;
static void list_model_iface_init (GListModelInterface *iface); static void list_model_iface_init (GListModelInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpModelFilter, sp_model_filter, G_TYPE_OBJECT, 0, G_DEFINE_TYPE_EXTENDED (SysprofModelFilter, sysprof_model_filter, G_TYPE_OBJECT, 0,
G_ADD_PRIVATE (SpModelFilter) G_ADD_PRIVATE (SysprofModelFilter)
G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL,
list_model_iface_init)) list_model_iface_init))
@ -75,17 +75,17 @@ static GParamSpec *properties [N_PROPS];
static guint signal_id; static guint signal_id;
static void static void
sp_model_filter_item_free (gpointer data) sysprof_model_filter_item_free (gpointer data)
{ {
SpModelFilterItem *item = data; SysprofModelFilterItem *item = data;
g_clear_pointer (&item->filter_iter, g_sequence_remove); g_clear_pointer (&item->filter_iter, g_sequence_remove);
item->child_iter = NULL; item->child_iter = NULL;
g_slice_free (SpModelFilterItem, item); g_slice_free (SysprofModelFilterItem, item);
} }
static gboolean static gboolean
sp_model_filter_default_filter_func (GObject *item, sysprof_model_filter_default_filter_func (GObject *item,
gpointer user_data) gpointer user_data)
{ {
return TRUE; return TRUE;
@ -101,17 +101,17 @@ sp_model_filter_default_filter_func (GObject *item,
* Returns: a #GSequenceIter from the filter sequence. * Returns: a #GSequenceIter from the filter sequence.
*/ */
static GSequenceIter * static GSequenceIter *
find_next_visible_filter_iter (SpModelFilter *self, find_next_visible_filter_iter (SysprofModelFilter *self,
GSequenceIter *iter) GSequenceIter *iter)
{ {
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
g_assert (SP_IS_MODEL_FILTER (self)); g_assert (SYSPROF_IS_MODEL_FILTER (self));
g_assert (iter != NULL); g_assert (iter != NULL);
for (; !g_sequence_iter_is_end (iter); iter = g_sequence_iter_next (iter)) for (; !g_sequence_iter_is_end (iter); iter = g_sequence_iter_next (iter))
{ {
SpModelFilterItem *item = g_sequence_get (iter); SysprofModelFilterItem *item = g_sequence_get (iter);
g_assert (item->child_iter == iter); g_assert (item->child_iter == iter);
g_assert (item->filter_iter == NULL || g_assert (item->filter_iter == NULL ||
@ -125,16 +125,16 @@ find_next_visible_filter_iter (SpModelFilter *self,
} }
static void static void
sp_model_filter_child_model_items_changed (SpModelFilter *self, sysprof_model_filter_child_model_items_changed (SysprofModelFilter *self,
guint position, guint position,
guint n_removed, guint n_removed,
guint n_added, guint n_added,
GListModel *child_model) GListModel *child_model)
{ {
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
gboolean unblocked; gboolean unblocked;
g_assert (SP_IS_MODEL_FILTER (self)); g_assert (SYSPROF_IS_MODEL_FILTER (self));
g_assert (G_IS_LIST_MODEL (child_model)); g_assert (G_IS_LIST_MODEL (child_model));
g_assert (priv->child_model == child_model); g_assert (priv->child_model == child_model);
g_assert (position <= (guint)g_sequence_get_length (priv->child_seq)); g_assert (position <= (guint)g_sequence_get_length (priv->child_seq));
@ -164,7 +164,7 @@ sp_model_filter_child_model_items_changed (SpModelFilter *self,
for (guint i = 0; i < n_removed; i++) for (guint i = 0; i < n_removed; i++)
{ {
GSequenceIter *to_remove = iter; GSequenceIter *to_remove = iter;
SpModelFilterItem *item = g_sequence_get (iter); SysprofModelFilterItem *item = g_sequence_get (iter);
g_assert (item != NULL); g_assert (item != NULL);
g_assert (item->child_iter == iter); g_assert (item->child_iter == iter);
@ -207,9 +207,9 @@ add_new_items:
for (guint i = position + n_added; i > position; i--) for (guint i = position + n_added; i > position; i--)
{ {
g_autoptr(GObject) instance = NULL; g_autoptr(GObject) instance = NULL;
SpModelFilterItem *item; SysprofModelFilterItem *item;
item = g_slice_new0 (SpModelFilterItem); item = g_slice_new0 (SysprofModelFilterItem);
item->filter_iter = NULL; item->filter_iter = NULL;
item->child_iter = g_sequence_insert_before (iter, item); item->child_iter = g_sequence_insert_before (iter, item);
@ -240,10 +240,10 @@ add_new_items:
} }
static void static void
sp_model_filter_finalize (GObject *object) sysprof_model_filter_finalize (GObject *object)
{ {
SpModelFilter *self = (SpModelFilter *)object; SysprofModelFilter *self = (SysprofModelFilter *)object;
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
g_clear_pointer (&priv->child_seq, g_sequence_free); g_clear_pointer (&priv->child_seq, g_sequence_free);
g_clear_pointer (&priv->filter_seq, g_sequence_free); g_clear_pointer (&priv->filter_seq, g_sequence_free);
@ -256,21 +256,21 @@ sp_model_filter_finalize (GObject *object)
g_clear_object (&priv->child_model); g_clear_object (&priv->child_model);
G_OBJECT_CLASS (sp_model_filter_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_model_filter_parent_class)->finalize (object);
} }
static void static void
sp_model_filter_get_property (GObject *object, sysprof_model_filter_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpModelFilter *self = SP_MODEL_FILTER (object); SysprofModelFilter *self = SYSPROF_MODEL_FILTER (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_CHILD_MODEL: case PROP_CHILD_MODEL:
g_value_set_object (value, sp_model_filter_get_child_model (self)); g_value_set_object (value, sysprof_model_filter_get_child_model (self));
break; break;
default: default:
@ -279,12 +279,12 @@ sp_model_filter_get_property (GObject *object,
} }
static void static void
sp_model_filter_class_init (SpModelFilterClass *klass) sysprof_model_filter_class_init (SysprofModelFilterClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_model_filter_finalize; object_class->finalize = sysprof_model_filter_finalize;
object_class->get_property = sp_model_filter_get_property; object_class->get_property = sysprof_model_filter_get_property;
properties [PROP_CHILD_MODEL] = properties [PROP_CHILD_MODEL] =
g_param_spec_object ("child-model", g_param_spec_object ("child-model",
@ -295,53 +295,53 @@ sp_model_filter_class_init (SpModelFilterClass *klass)
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
signal_id = g_signal_lookup ("items-changed", SP_TYPE_MODEL_FILTER); signal_id = g_signal_lookup ("items-changed", SYSPROF_TYPE_MODEL_FILTER);
} }
static void static void
sp_model_filter_init (SpModelFilter *self) sysprof_model_filter_init (SysprofModelFilter *self)
{ {
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
priv->filter_func = sp_model_filter_default_filter_func; priv->filter_func = sysprof_model_filter_default_filter_func;
priv->child_seq = g_sequence_new (sp_model_filter_item_free); priv->child_seq = g_sequence_new (sysprof_model_filter_item_free);
priv->filter_seq = g_sequence_new (NULL); priv->filter_seq = g_sequence_new (NULL);
} }
static GType static GType
sp_model_filter_get_item_type (GListModel *model) sysprof_model_filter_get_item_type (GListModel *model)
{ {
SpModelFilter *self = (SpModelFilter *)model; SysprofModelFilter *self = (SysprofModelFilter *)model;
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
g_assert (SP_IS_MODEL_FILTER (self)); g_assert (SYSPROF_IS_MODEL_FILTER (self));
return g_list_model_get_item_type (priv->child_model); return g_list_model_get_item_type (priv->child_model);
} }
static guint static guint
sp_model_filter_get_n_items (GListModel *model) sysprof_model_filter_get_n_items (GListModel *model)
{ {
SpModelFilter *self = (SpModelFilter *)model; SysprofModelFilter *self = (SysprofModelFilter *)model;
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
g_assert (SP_IS_MODEL_FILTER (self)); g_assert (SYSPROF_IS_MODEL_FILTER (self));
g_assert (priv->filter_seq != NULL); g_assert (priv->filter_seq != NULL);
return g_sequence_get_length (priv->filter_seq); return g_sequence_get_length (priv->filter_seq);
} }
static gpointer static gpointer
sp_model_filter_get_item (GListModel *model, sysprof_model_filter_get_item (GListModel *model,
guint position) guint position)
{ {
SpModelFilter *self = (SpModelFilter *)model; SysprofModelFilter *self = (SysprofModelFilter *)model;
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
SpModelFilterItem *item; SysprofModelFilterItem *item;
GSequenceIter *iter; GSequenceIter *iter;
guint child_position; guint child_position;
g_assert (SP_IS_MODEL_FILTER (self)); g_assert (SYSPROF_IS_MODEL_FILTER (self));
g_assert (position < (guint)g_sequence_get_length (priv->filter_seq)); g_assert (position < (guint)g_sequence_get_length (priv->filter_seq));
iter = g_sequence_get_iter_at_pos (priv->filter_seq, position); iter = g_sequence_get_iter_at_pos (priv->filter_seq, position);
@ -361,59 +361,59 @@ sp_model_filter_get_item (GListModel *model,
static void static void
list_model_iface_init (GListModelInterface *iface) list_model_iface_init (GListModelInterface *iface)
{ {
iface->get_item_type = sp_model_filter_get_item_type; iface->get_item_type = sysprof_model_filter_get_item_type;
iface->get_n_items = sp_model_filter_get_n_items; iface->get_n_items = sysprof_model_filter_get_n_items;
iface->get_item = sp_model_filter_get_item; iface->get_item = sysprof_model_filter_get_item;
} }
SpModelFilter * SysprofModelFilter *
sp_model_filter_new (GListModel *child_model) sysprof_model_filter_new (GListModel *child_model)
{ {
SpModelFilter *ret; SysprofModelFilter *ret;
SpModelFilterPrivate *priv; SysprofModelFilterPrivate *priv;
g_return_val_if_fail (G_IS_LIST_MODEL (child_model), NULL); g_return_val_if_fail (G_IS_LIST_MODEL (child_model), NULL);
ret = g_object_new (SP_TYPE_MODEL_FILTER, NULL); ret = g_object_new (SYSPROF_TYPE_MODEL_FILTER, NULL);
priv = sp_model_filter_get_instance_private (ret); priv = sysprof_model_filter_get_instance_private (ret);
priv->child_model = g_object_ref (child_model); priv->child_model = g_object_ref (child_model);
g_signal_connect_object (child_model, g_signal_connect_object (child_model,
"items-changed", "items-changed",
G_CALLBACK (sp_model_filter_child_model_items_changed), G_CALLBACK (sysprof_model_filter_child_model_items_changed),
ret, ret,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
sp_model_filter_invalidate (ret); sysprof_model_filter_invalidate (ret);
return ret; return ret;
} }
/** /**
* sp_model_filter_get_child_model: * sysprof_model_filter_get_child_model:
* @self: A #SpModelFilter * @self: A #SysprofModelFilter
* *
* Gets the child model that is being filtered. * Gets the child model that is being filtered.
* *
* Returns: (transfer none): A #GListModel. * Returns: (transfer none): A #GListModel.
*/ */
GListModel * GListModel *
sp_model_filter_get_child_model (SpModelFilter *self) sysprof_model_filter_get_child_model (SysprofModelFilter *self)
{ {
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
g_return_val_if_fail (SP_IS_MODEL_FILTER (self), NULL); g_return_val_if_fail (SYSPROF_IS_MODEL_FILTER (self), NULL);
return priv->child_model; return priv->child_model;
} }
void void
sp_model_filter_invalidate (SpModelFilter *self) sysprof_model_filter_invalidate (SysprofModelFilter *self)
{ {
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
guint n_items; guint n_items;
g_return_if_fail (SP_IS_MODEL_FILTER (self)); g_return_if_fail (SYSPROF_IS_MODEL_FILTER (self));
/* We block emission while in invalidate so that we can use /* We block emission while in invalidate so that we can use
* a single larger items-changed rather lots of small emissions. * a single larger items-changed rather lots of small emissions.
@ -448,7 +448,7 @@ sp_model_filter_invalidate (SpModelFilter *self)
* we get populate our sequence and filter sequence. * we get populate our sequence and filter sequence.
*/ */
child_n_items = g_list_model_get_n_items (priv->child_model); child_n_items = g_list_model_get_n_items (priv->child_model);
sp_model_filter_child_model_items_changed (self, 0, 0, child_n_items, priv->child_model); sysprof_model_filter_child_model_items_changed (self, 0, 0, child_n_items, priv->child_model);
g_assert ((guint)g_sequence_get_length (priv->child_seq) == child_n_items); g_assert ((guint)g_sequence_get_length (priv->child_seq) == child_n_items);
g_assert ((guint)g_sequence_get_length (priv->filter_seq) <= child_n_items); g_assert ((guint)g_sequence_get_length (priv->filter_seq) <= child_n_items);
@ -467,14 +467,14 @@ sp_model_filter_invalidate (SpModelFilter *self)
} }
void void
sp_model_filter_set_filter_func (SpModelFilter *self, sysprof_model_filter_set_filter_func (SysprofModelFilter *self,
SpModelFilterFunc filter_func, SysprofModelFilterFunc filter_func,
gpointer filter_func_data, gpointer filter_func_data,
GDestroyNotify filter_func_data_destroy) GDestroyNotify filter_func_data_destroy)
{ {
SpModelFilterPrivate *priv = sp_model_filter_get_instance_private (self); SysprofModelFilterPrivate *priv = sysprof_model_filter_get_instance_private (self);
g_return_if_fail (SP_IS_MODEL_FILTER (self)); g_return_if_fail (SYSPROF_IS_MODEL_FILTER (self));
g_return_if_fail (filter_func || (!filter_func_data && !filter_func_data_destroy)); g_return_if_fail (filter_func || (!filter_func_data && !filter_func_data_destroy));
if (priv->filter_func_data_destroy != NULL) if (priv->filter_func_data_destroy != NULL)
@ -488,10 +488,10 @@ sp_model_filter_set_filter_func (SpModelFilter *self,
} }
else else
{ {
priv->filter_func = sp_model_filter_default_filter_func; priv->filter_func = sysprof_model_filter_default_filter_func;
priv->filter_func_data = NULL; priv->filter_func_data = NULL;
priv->filter_func_data_destroy = NULL; priv->filter_func_data_destroy = NULL;
} }
sp_model_filter_invalidate (self); sysprof_model_filter_invalidate (self);
} }

View File

@ -1,4 +1,4 @@
/* sp-model-filter.h /* sysprof-model-filter.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -26,15 +26,15 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_MODEL_FILTER (sp_model_filter_get_type()) #define SYSPROF_TYPE_MODEL_FILTER (sysprof_model_filter_get_type())
typedef gboolean (*SpModelFilterFunc) (GObject *object, typedef gboolean (*SysprofModelFilterFunc) (GObject *object,
gpointer user_data); gpointer user_data);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpModelFilter, sp_model_filter, SP, MODEL_FILTER, GObject) G_DECLARE_DERIVABLE_TYPE (SysprofModelFilter, sysprof_model_filter, SYSPROF, MODEL_FILTER, GObject)
struct _SpModelFilterClass struct _SysprofModelFilterClass
{ {
GObjectClass parent_class; GObjectClass parent_class;
@ -42,14 +42,14 @@ struct _SpModelFilterClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpModelFilter *sp_model_filter_new (GListModel *child_model); SysprofModelFilter *sysprof_model_filter_new (GListModel *child_model);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GListModel *sp_model_filter_get_child_model (SpModelFilter *self); GListModel *sysprof_model_filter_get_child_model (SysprofModelFilter *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_model_filter_invalidate (SpModelFilter *self); void sysprof_model_filter_invalidate (SysprofModelFilter *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_model_filter_set_filter_func (SpModelFilter *self, void sysprof_model_filter_set_filter_func (SysprofModelFilter *self,
SpModelFilterFunc filter_func, SysprofModelFilterFunc filter_func,
gpointer filter_func_data, gpointer filter_func_data,
GDestroyNotify filter_func_data_destroy); GDestroyNotify filter_func_data_destroy);

View File

@ -1,4 +1,4 @@
/* sp-multi-paned.h /* sysprof-multi-paned.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -27,18 +27,18 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_MULTI_PANED (sp_multi_paned_get_type()) #define SYSPROF_TYPE_MULTI_PANED (sysprof_multi_paned_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpMultiPaned, sp_multi_paned, SP, MULTI_PANED, GtkContainer) G_DECLARE_DERIVABLE_TYPE (SysprofMultiPaned, sysprof_multi_paned, SYSPROF, MULTI_PANED, GtkContainer)
struct _SpMultiPanedClass struct _SysprofMultiPanedClass
{ {
GtkContainerClass parent; GtkContainerClass parent;
void (*resize_drag_begin) (SpMultiPaned *self, void (*resize_drag_begin) (SysprofMultiPaned *self,
GtkWidget *child); GtkWidget *child);
void (*resize_drag_end) (SpMultiPaned *self, void (*resize_drag_end) (SysprofMultiPaned *self,
GtkWidget *child); GtkWidget *child);
gpointer _reserved1; gpointer _reserved1;
@ -52,8 +52,8 @@ struct _SpMultiPanedClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_multi_paned_new (void); GtkWidget *sysprof_multi_paned_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
guint sp_multi_paned_get_n_children (SpMultiPaned *self); guint sysprof_multi_paned_get_n_children (SysprofMultiPaned *self);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-process-model-row.c /* sysprof-process-model-row.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -20,20 +20,20 @@
#include "config.h" #include "config.h"
#include "sp-process-model-row.h" #include "sysprof-process-model-row.h"
typedef struct typedef struct
{ {
SpProcessModelItem *item; SysprofProcessModelItem *item;
GtkLabel *args_label; GtkLabel *args_label;
GtkLabel *label; GtkLabel *label;
GtkLabel *pid; GtkLabel *pid;
GtkImage *image; GtkImage *image;
GtkImage *check; GtkImage *check;
} SpProcessModelRowPrivate; } SysprofProcessModelRowPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SpProcessModelRow, sp_process_model_row, GTK_TYPE_LIST_BOX_ROW) G_DEFINE_TYPE_WITH_PRIVATE (SysprofProcessModelRow, sysprof_process_model_row, GTK_TYPE_LIST_BOX_ROW)
enum { enum {
PROP_0, PROP_0,
@ -45,31 +45,31 @@ enum {
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
GtkWidget * GtkWidget *
sp_process_model_row_new (SpProcessModelItem *item) sysprof_process_model_row_new (SysprofProcessModelItem *item)
{ {
return g_object_new (SP_TYPE_PROCESS_MODEL_ROW, return g_object_new (SYSPROF_TYPE_PROCESS_MODEL_ROW,
"item", item, "item", item,
NULL); NULL);
} }
SpProcessModelItem * SysprofProcessModelItem *
sp_process_model_row_get_item (SpProcessModelRow *self) sysprof_process_model_row_get_item (SysprofProcessModelRow *self)
{ {
SpProcessModelRowPrivate *priv = sp_process_model_row_get_instance_private (self); SysprofProcessModelRowPrivate *priv = sysprof_process_model_row_get_instance_private (self);
g_return_val_if_fail (SP_IS_PROCESS_MODEL_ROW (self), NULL); g_return_val_if_fail (SYSPROF_IS_PROCESS_MODEL_ROW (self), NULL);
return priv->item; return priv->item;
} }
static void static void
sp_process_model_row_set_item (SpProcessModelRow *self, sysprof_process_model_row_set_item (SysprofProcessModelRow *self,
SpProcessModelItem *item) SysprofProcessModelItem *item)
{ {
SpProcessModelRowPrivate *priv = sp_process_model_row_get_instance_private (self); SysprofProcessModelRowPrivate *priv = sysprof_process_model_row_get_instance_private (self);
g_assert (SP_IS_PROCESS_MODEL_ROW (self)); g_assert (SYSPROF_IS_PROCESS_MODEL_ROW (self));
g_assert (SP_IS_PROCESS_MODEL_ITEM (item)); g_assert (SYSPROF_IS_PROCESS_MODEL_ITEM (item));
if (g_set_object (&priv->item, item)) if (g_set_object (&priv->item, item))
{ {
@ -79,11 +79,11 @@ sp_process_model_row_set_item (SpProcessModelRow *self,
const gchar * const *argv; const gchar * const *argv;
GPid pid; GPid pid;
command_line = sp_process_model_item_get_command_line (item); command_line = sysprof_process_model_item_get_command_line (item);
parts = g_strsplit (command_line ?: "", "\n", 0); parts = g_strsplit (command_line ?: "", "\n", 0);
gtk_label_set_label (priv->label, parts [0]); gtk_label_set_label (priv->label, parts [0]);
if ((NULL != (argv = sp_process_model_item_get_argv (item))) && (argv[0] != NULL)) if ((NULL != (argv = sysprof_process_model_item_get_argv (item))) && (argv[0] != NULL))
{ {
g_autofree gchar *argvstr = g_strjoinv (" ", (gchar **)&argv[1]); g_autofree gchar *argvstr = g_strjoinv (" ", (gchar **)&argv[1]);
g_autofree gchar *escaped = g_markup_escape_text (argvstr, -1); g_autofree gchar *escaped = g_markup_escape_text (argvstr, -1);
@ -91,7 +91,7 @@ sp_process_model_row_set_item (SpProcessModelRow *self,
gtk_label_set_label (priv->args_label, escaped); gtk_label_set_label (priv->args_label, escaped);
} }
pid = sp_process_model_item_get_pid (item); pid = sysprof_process_model_item_get_pid (item);
pidstr = g_strdup_printf ("<small>%u</small>", pid); pidstr = g_strdup_printf ("<small>%u</small>", pid);
gtk_label_set_label (priv->pid, pidstr); gtk_label_set_label (priv->pid, pidstr);
gtk_label_set_use_markup (priv->pid, TRUE); gtk_label_set_use_markup (priv->pid, TRUE);
@ -99,26 +99,26 @@ sp_process_model_row_set_item (SpProcessModelRow *self,
} }
gboolean gboolean
sp_process_model_row_get_selected (SpProcessModelRow *self) sysprof_process_model_row_get_selected (SysprofProcessModelRow *self)
{ {
SpProcessModelRowPrivate *priv = sp_process_model_row_get_instance_private (self); SysprofProcessModelRowPrivate *priv = sysprof_process_model_row_get_instance_private (self);
g_return_val_if_fail (SP_IS_PROCESS_MODEL_ROW (self), FALSE); g_return_val_if_fail (SYSPROF_IS_PROCESS_MODEL_ROW (self), FALSE);
return gtk_widget_get_visible (GTK_WIDGET (priv->check)); return gtk_widget_get_visible (GTK_WIDGET (priv->check));
} }
void void
sp_process_model_row_set_selected (SpProcessModelRow *self, sysprof_process_model_row_set_selected (SysprofProcessModelRow *self,
gboolean selected) gboolean selected)
{ {
SpProcessModelRowPrivate *priv = sp_process_model_row_get_instance_private (self); SysprofProcessModelRowPrivate *priv = sysprof_process_model_row_get_instance_private (self);
g_return_if_fail (SP_IS_PROCESS_MODEL_ROW (self)); g_return_if_fail (SYSPROF_IS_PROCESS_MODEL_ROW (self));
selected = !!selected; selected = !!selected;
if (selected != sp_process_model_row_get_selected (self)) if (selected != sysprof_process_model_row_get_selected (self))
{ {
gtk_widget_set_visible (GTK_WIDGET (priv->check), selected); gtk_widget_set_visible (GTK_WIDGET (priv->check), selected);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SELECTED]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SELECTED]);
@ -126,21 +126,21 @@ sp_process_model_row_set_selected (SpProcessModelRow *self,
} }
static gboolean static gboolean
sp_process_model_row_query_tooltip (GtkWidget *widget, sysprof_process_model_row_query_tooltip (GtkWidget *widget,
gint x, gint x,
gint y, gint y,
gboolean keyboard_mode, gboolean keyboard_mode,
GtkTooltip *tooltip) GtkTooltip *tooltip)
{ {
SpProcessModelRow *self = (SpProcessModelRow *)widget; SysprofProcessModelRow *self = (SysprofProcessModelRow *)widget;
SpProcessModelRowPrivate *priv = sp_process_model_row_get_instance_private (self); SysprofProcessModelRowPrivate *priv = sysprof_process_model_row_get_instance_private (self);
g_assert (SP_IS_PROCESS_MODEL_ROW (self)); g_assert (SYSPROF_IS_PROCESS_MODEL_ROW (self));
g_assert (GTK_IS_TOOLTIP (tooltip)); g_assert (GTK_IS_TOOLTIP (tooltip));
if (priv->item != NULL) if (priv->item != NULL)
{ {
const gchar * const *argv = sp_process_model_item_get_argv (priv->item); const gchar * const *argv = sysprof_process_model_item_get_argv (priv->item);
if (argv != NULL) if (argv != NULL)
{ {
@ -154,32 +154,32 @@ sp_process_model_row_query_tooltip (GtkWidget *widget,
} }
static void static void
sp_process_model_row_finalize (GObject *object) sysprof_process_model_row_finalize (GObject *object)
{ {
SpProcessModelRow *self = (SpProcessModelRow *)object; SysprofProcessModelRow *self = (SysprofProcessModelRow *)object;
SpProcessModelRowPrivate *priv = sp_process_model_row_get_instance_private (self); SysprofProcessModelRowPrivate *priv = sysprof_process_model_row_get_instance_private (self);
g_clear_object (&priv->item); g_clear_object (&priv->item);
G_OBJECT_CLASS (sp_process_model_row_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_process_model_row_parent_class)->finalize (object);
} }
static void static void
sp_process_model_row_get_property (GObject *object, sysprof_process_model_row_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpProcessModelRow *self = SP_PROCESS_MODEL_ROW (object); SysprofProcessModelRow *self = SYSPROF_PROCESS_MODEL_ROW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_ITEM: case PROP_ITEM:
g_value_set_object (value, sp_process_model_row_get_item (self)); g_value_set_object (value, sysprof_process_model_row_get_item (self));
break; break;
case PROP_SELECTED: case PROP_SELECTED:
g_value_set_boolean (value, sp_process_model_row_get_selected (self)); g_value_set_boolean (value, sysprof_process_model_row_get_selected (self));
break; break;
default: default:
@ -188,21 +188,21 @@ sp_process_model_row_get_property (GObject *object,
} }
static void static void
sp_process_model_row_set_property (GObject *object, sysprof_process_model_row_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpProcessModelRow *self = SP_PROCESS_MODEL_ROW (object); SysprofProcessModelRow *self = SYSPROF_PROCESS_MODEL_ROW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_ITEM: case PROP_ITEM:
sp_process_model_row_set_item (self, g_value_get_object (value)); sysprof_process_model_row_set_item (self, g_value_get_object (value));
break; break;
case PROP_SELECTED: case PROP_SELECTED:
sp_process_model_row_set_selected (self, g_value_get_boolean (value)); sysprof_process_model_row_set_selected (self, g_value_get_boolean (value));
break; break;
default: default:
@ -211,22 +211,22 @@ sp_process_model_row_set_property (GObject *object,
} }
static void static void
sp_process_model_row_class_init (SpProcessModelRowClass *klass) sysprof_process_model_row_class_init (SysprofProcessModelRowClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = sp_process_model_row_finalize; object_class->finalize = sysprof_process_model_row_finalize;
object_class->get_property = sp_process_model_row_get_property; object_class->get_property = sysprof_process_model_row_get_property;
object_class->set_property = sp_process_model_row_set_property; object_class->set_property = sysprof_process_model_row_set_property;
widget_class->query_tooltip = sp_process_model_row_query_tooltip; widget_class->query_tooltip = sysprof_process_model_row_query_tooltip;
properties [PROP_ITEM] = properties [PROP_ITEM] =
g_param_spec_object ("item", g_param_spec_object ("item",
"Item", "Item",
"Item", "Item",
SP_TYPE_PROCESS_MODEL_ITEM, SYSPROF_TYPE_PROCESS_MODEL_ITEM,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties [PROP_SELECTED] = properties [PROP_SELECTED] =
@ -239,16 +239,16 @@ sp_process_model_row_class_init (SpProcessModelRowClass *klass)
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
gtk_widget_class_set_template_from_resource (widget_class, gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/sysprof/ui/sp-process-model-row.ui"); "/org/gnome/sysprof/ui/sysprof-process-model-row.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpProcessModelRow, args_label); gtk_widget_class_bind_template_child_private (widget_class, SysprofProcessModelRow, args_label);
gtk_widget_class_bind_template_child_private (widget_class, SpProcessModelRow, image); gtk_widget_class_bind_template_child_private (widget_class, SysprofProcessModelRow, image);
gtk_widget_class_bind_template_child_private (widget_class, SpProcessModelRow, label); gtk_widget_class_bind_template_child_private (widget_class, SysprofProcessModelRow, label);
gtk_widget_class_bind_template_child_private (widget_class, SpProcessModelRow, pid); gtk_widget_class_bind_template_child_private (widget_class, SysprofProcessModelRow, pid);
gtk_widget_class_bind_template_child_private (widget_class, SpProcessModelRow, check); gtk_widget_class_bind_template_child_private (widget_class, SysprofProcessModelRow, check);
} }
static void static void
sp_process_model_row_init (SpProcessModelRow *self) sysprof_process_model_row_init (SysprofProcessModelRow *self)
{ {
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));

View File

@ -1,4 +1,4 @@
/* sp-process-model-row.h /* sysprof-process-model-row.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,17 +22,17 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-process-model-item.h" #include "sysprof-process-model-item.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_PROCESS_MODEL_ROW (sp_process_model_row_get_type()) #define SYSPROF_TYPE_PROCESS_MODEL_ROW (sysprof_process_model_row_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpProcessModelRow, sp_process_model_row, SP, PROCESS_MODEL_ROW, GtkListBoxRow) G_DECLARE_DERIVABLE_TYPE (SysprofProcessModelRow, sysprof_process_model_row, SYSPROF, PROCESS_MODEL_ROW, GtkListBoxRow)
struct _SpProcessModelRowClass struct _SysprofProcessModelRowClass
{ {
GtkListBoxRowClass parent; GtkListBoxRowClass parent;
@ -40,13 +40,13 @@ struct _SpProcessModelRowClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_process_model_row_new (SpProcessModelItem *item); GtkWidget *sysprof_process_model_row_new (SysprofProcessModelItem *item);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpProcessModelItem *sp_process_model_row_get_item (SpProcessModelRow *self); SysprofProcessModelItem *sysprof_process_model_row_get_item (SysprofProcessModelRow *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_process_model_row_get_selected (SpProcessModelRow *self); gboolean sysprof_process_model_row_get_selected (SysprofProcessModelRow *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_process_model_row_set_selected (SpProcessModelRow *self, void sysprof_process_model_row_set_selected (SysprofProcessModelRow *self,
gboolean selected); gboolean selected);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-profiler-menu-button.c /* sysprof-profiler-menu-button.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -23,16 +23,16 @@
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <string.h> #include <string.h>
#include "sp-model-filter.h" #include "sysprof-model-filter.h"
#include "sp-process-model.h" #include "sysprof-process-model.h"
#include "sp-process-model-item.h" #include "sysprof-process-model-item.h"
#include "sp-process-model-row.h" #include "sysprof-process-model-row.h"
#include "sp-profiler-menu-button.h" #include "sysprof-profiler-menu-button.h"
typedef struct typedef struct
{ {
SpProfiler *profiler; SysprofProfiler *profiler;
SpModelFilter *process_filter; SysprofModelFilter *process_filter;
/* Gtk template widgets */ /* Gtk template widgets */
GtkTreeModel *environment_model; GtkTreeModel *environment_model;
@ -40,7 +40,7 @@ typedef struct
GtkPopover *popover; GtkPopover *popover;
GtkEntry *process_filter_entry; GtkEntry *process_filter_entry;
GtkListBox *process_list_box; GtkListBox *process_list_box;
SpProcessModel *process_model; SysprofProcessModel *process_model;
GtkBox *processes_box; GtkBox *processes_box;
GtkEntry *spawn_entry; GtkEntry *spawn_entry;
GtkStack *stack; GtkStack *stack;
@ -63,9 +63,9 @@ typedef struct
/* GSources */ /* GSources */
guint save_env_source; guint save_env_source;
} SpProfilerMenuButtonPrivate; } SysprofProfilerMenuButtonPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SpProfilerMenuButton, sp_profiler_menu_button, GTK_TYPE_MENU_BUTTON) G_DEFINE_TYPE_WITH_PRIVATE (SysprofProfilerMenuButton, sysprof_profiler_menu_button, GTK_TYPE_MENU_BUTTON)
enum { enum {
PROP_0, PROP_0,
@ -73,32 +73,32 @@ enum {
N_PROPS N_PROPS
}; };
static void sp_profiler_menu_button_env_row_changed (SpProfilerMenuButton *self, static void sysprof_profiler_menu_button_env_row_changed (SysprofProfilerMenuButton *self,
GtkTreePath *tree_path, GtkTreePath *tree_path,
GtkTreeIter *tree_iter, GtkTreeIter *tree_iter,
gpointer user_data); gpointer user_data);
static void sp_profiler_menu_button_validate_spawn (SpProfilerMenuButton *self, static void sysprof_profiler_menu_button_validate_spawn (SysprofProfilerMenuButton *self,
GtkEntry *entry); GtkEntry *entry);
static gboolean save_environ_to_gsettings (gpointer data); static gboolean save_environ_to_gsettings (gpointer data);
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
GtkWidget * GtkWidget *
sp_profiler_menu_button_new (void) sysprof_profiler_menu_button_new (void)
{ {
return g_object_new (SP_TYPE_PROFILER_MENU_BUTTON, NULL); return g_object_new (SYSPROF_TYPE_PROFILER_MENU_BUTTON, NULL);
} }
static void static void
sp_profiler_menu_button_update_label (SpProfilerMenuButton *self) sysprof_profiler_menu_button_update_label (SysprofProfilerMenuButton *self)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_autofree gchar *str = NULL; g_autofree gchar *str = NULL;
const gchar *visible_child; const gchar *visible_child;
const GPid *pids; const GPid *pids;
guint n_pids = 0; guint n_pids = 0;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
if (priv->profiler == NULL) if (priv->profiler == NULL)
{ {
@ -116,21 +116,21 @@ sp_profiler_menu_button_update_label (SpProfilerMenuButton *self)
if (text && *text) if (text && *text)
gtk_label_set_label (priv->label, text); gtk_label_set_label (priv->label, text);
else if (sp_profiler_get_whole_system (priv->profiler)) else if (sysprof_profiler_get_whole_system (priv->profiler))
gtk_label_set_label (priv->label, _("All Processes")); gtk_label_set_label (priv->label, _("All Processes"));
else else
gtk_label_set_label (priv->label, _("New Process")); gtk_label_set_label (priv->label, _("New Process"));
sp_profiler_set_spawn (priv->profiler, text && *text); sysprof_profiler_set_spawn (priv->profiler, text && *text);
return; return;
} }
sp_profiler_set_spawn (priv->profiler, FALSE); sysprof_profiler_set_spawn (priv->profiler, FALSE);
pids = sp_profiler_get_pids (priv->profiler, &n_pids); pids = sysprof_profiler_get_pids (priv->profiler, &n_pids);
if (n_pids == 0 || sp_profiler_get_whole_system (priv->profiler)) if (n_pids == 0 || sysprof_profiler_get_whole_system (priv->profiler))
{ {
gtk_label_set_label (priv->label, _("All Processes")); gtk_label_set_label (priv->label, _("All Processes"));
return; return;
@ -153,7 +153,7 @@ static void
clear_selected_flags (GtkWidget *widget, clear_selected_flags (GtkWidget *widget,
gpointer user_data) gpointer user_data)
{ {
sp_process_model_row_set_selected (SP_PROCESS_MODEL_ROW (widget), FALSE); sysprof_process_model_row_set_selected (SYSPROF_PROCESS_MODEL_ROW (widget), FALSE);
} }
static void static void
@ -192,12 +192,12 @@ clear_binding (GBinding **binding)
} }
static void static void
sp_profiler_menu_button_connect (SpProfilerMenuButton *self) sysprof_profiler_menu_button_connect (SysprofProfilerMenuButton *self)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (SP_IS_PROFILER (priv->profiler)); g_assert (SYSPROF_IS_PROFILER (priv->profiler));
add_binding (&priv->mutable_binding, add_binding (&priv->mutable_binding,
priv->profiler, "is-mutable", priv->profiler, "is-mutable",
@ -222,23 +222,23 @@ sp_profiler_menu_button_connect (SpProfilerMenuButton *self)
priv->notify_whole_system_handler = priv->notify_whole_system_handler =
g_signal_connect_object (priv->profiler, g_signal_connect_object (priv->profiler,
"notify::whole-system", "notify::whole-system",
G_CALLBACK (sp_profiler_menu_button_update_label), G_CALLBACK (sysprof_profiler_menu_button_update_label),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
sp_profiler_menu_button_update_label (self); sysprof_profiler_menu_button_update_label (self);
sp_profiler_menu_button_validate_spawn (self, priv->spawn_entry); sysprof_profiler_menu_button_validate_spawn (self, priv->spawn_entry);
sp_profiler_menu_button_env_row_changed (self, NULL, NULL, NULL); sysprof_profiler_menu_button_env_row_changed (self, NULL, NULL, NULL);
} }
static void static void
sp_profiler_menu_button_disconnect (SpProfilerMenuButton *self) sysprof_profiler_menu_button_disconnect (SysprofProfilerMenuButton *self)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (SP_IS_PROFILER (priv->profiler)); g_assert (SYSPROF_IS_PROFILER (priv->profiler));
clear_binding (&priv->mutable_binding); clear_binding (&priv->mutable_binding);
clear_binding (&priv->whole_system_binding); clear_binding (&priv->whole_system_binding);
@ -259,45 +259,45 @@ sp_profiler_menu_button_disconnect (SpProfilerMenuButton *self)
clear_selected_flags, clear_selected_flags,
NULL); NULL);
sp_profiler_menu_button_update_label (self); sysprof_profiler_menu_button_update_label (self);
} }
/** /**
* sp_profiler_menu_button_get_profiler: * sysprof_profiler_menu_button_get_profiler:
* @self: An #SpProfilerMenuButton * @self: An #SysprofProfilerMenuButton
* *
* Gets the profiler instance that is being configured. * Gets the profiler instance that is being configured.
* *
* Returns: (nullable) (transfer none): An #SpProfiler or %NULL. * Returns: (nullable) (transfer none): An #SysprofProfiler or %NULL.
*/ */
SpProfiler * SysprofProfiler *
sp_profiler_menu_button_get_profiler (SpProfilerMenuButton *self) sysprof_profiler_menu_button_get_profiler (SysprofProfilerMenuButton *self)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_return_val_if_fail (SP_IS_PROFILER_MENU_BUTTON (self), NULL); g_return_val_if_fail (SYSPROF_IS_PROFILER_MENU_BUTTON (self), NULL);
return priv->profiler; return priv->profiler;
} }
void void
sp_profiler_menu_button_set_profiler (SpProfilerMenuButton *self, sysprof_profiler_menu_button_set_profiler (SysprofProfilerMenuButton *self,
SpProfiler *profiler) SysprofProfiler *profiler)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_return_if_fail (SP_IS_PROFILER_MENU_BUTTON (self)); g_return_if_fail (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_return_if_fail (!profiler || SP_IS_PROFILER (profiler)); g_return_if_fail (!profiler || SYSPROF_IS_PROFILER (profiler));
if (priv->profiler != profiler) if (priv->profiler != profiler)
{ {
if (priv->profiler != NULL) if (priv->profiler != NULL)
sp_profiler_menu_button_disconnect (self); sysprof_profiler_menu_button_disconnect (self);
if (profiler != NULL) if (profiler != NULL)
{ {
priv->profiler = g_object_ref (profiler); priv->profiler = g_object_ref (profiler);
sp_profiler_menu_button_connect (self); sysprof_profiler_menu_button_connect (self);
} }
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PROFILER]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PROFILER]);
@ -305,75 +305,75 @@ sp_profiler_menu_button_set_profiler (SpProfilerMenuButton *self,
} }
static void static void
sp_profiler_menu_button_row_activated (SpProfilerMenuButton *self, sysprof_profiler_menu_button_row_activated (SysprofProfilerMenuButton *self,
SpProcessModelRow *row, SysprofProcessModelRow *row,
GtkListBox *list_box) GtkListBox *list_box)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
gboolean selected; gboolean selected;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (SP_IS_PROCESS_MODEL_ROW (row)); g_assert (SYSPROF_IS_PROCESS_MODEL_ROW (row));
g_assert (GTK_IS_LIST_BOX (list_box)); g_assert (GTK_IS_LIST_BOX (list_box));
selected = !sp_process_model_row_get_selected (row); selected = !sysprof_process_model_row_get_selected (row);
sp_process_model_row_set_selected (row, selected); sysprof_process_model_row_set_selected (row, selected);
if (priv->profiler != NULL) if (priv->profiler != NULL)
{ {
SpProcessModelItem *item = sp_process_model_row_get_item (row); SysprofProcessModelItem *item = sysprof_process_model_row_get_item (row);
GPid pid = sp_process_model_item_get_pid (item); GPid pid = sysprof_process_model_item_get_pid (item);
if (selected) if (selected)
sp_profiler_add_pid (priv->profiler, pid); sysprof_profiler_add_pid (priv->profiler, pid);
else else
sp_profiler_remove_pid (priv->profiler, pid); sysprof_profiler_remove_pid (priv->profiler, pid);
} }
sp_profiler_menu_button_update_label (self); sysprof_profiler_menu_button_update_label (self);
} }
static GtkWidget * static GtkWidget *
sp_profiler_menu_button_create_row (gpointer itemptr, sysprof_profiler_menu_button_create_row (gpointer itemptr,
gpointer user_data) gpointer user_data)
{ {
SpProcessModelItem *item = itemptr; SysprofProcessModelItem *item = itemptr;
g_assert (SP_IS_PROCESS_MODEL_ITEM (item)); g_assert (SYSPROF_IS_PROCESS_MODEL_ITEM (item));
g_assert (SP_IS_PROFILER_MENU_BUTTON (user_data)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (user_data));
return g_object_new (SP_TYPE_PROCESS_MODEL_ROW, return g_object_new (SYSPROF_TYPE_PROCESS_MODEL_ROW,
"item", item, "item", item,
"visible", TRUE, "visible", TRUE,
NULL); NULL);
} }
static void static void
sp_profiler_menu_button_clicked (GtkButton *button) sysprof_profiler_menu_button_clicked (GtkButton *button)
{ {
SpProfilerMenuButton *self = (SpProfilerMenuButton *)button; SysprofProfilerMenuButton *self = (SysprofProfilerMenuButton *)button;
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
sp_process_model_queue_reload (priv->process_model); sysprof_process_model_queue_reload (priv->process_model);
GTK_BUTTON_CLASS (sp_profiler_menu_button_parent_class)->clicked (button); GTK_BUTTON_CLASS (sysprof_profiler_menu_button_parent_class)->clicked (button);
} }
static gboolean static gboolean
sp_profiler_menu_button_filter_func (GObject *object, sysprof_profiler_menu_button_filter_func (GObject *object,
gpointer user_data) gpointer user_data)
{ {
const gchar *needle = user_data; const gchar *needle = user_data;
const gchar *haystack; const gchar *haystack;
g_assert (SP_IS_PROCESS_MODEL_ITEM (object)); g_assert (SYSPROF_IS_PROCESS_MODEL_ITEM (object));
if (needle == NULL) if (needle == NULL)
return TRUE; return TRUE;
haystack = sp_process_model_item_get_command_line (SP_PROCESS_MODEL_ITEM (object)); haystack = sysprof_process_model_item_get_command_line (SYSPROF_PROCESS_MODEL_ITEM (object));
if (haystack == NULL) if (haystack == NULL)
return FALSE; return FALSE;
@ -382,52 +382,52 @@ sp_profiler_menu_button_filter_func (GObject *object,
} }
static void static void
sp_profiler_menu_button_filter_changed (SpProfilerMenuButton *self, sysprof_profiler_menu_button_filter_changed (SysprofProfilerMenuButton *self,
GtkEntry *entry) GtkEntry *entry)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
const gchar *text; const gchar *text;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (GTK_IS_ENTRY (entry)); g_assert (GTK_IS_ENTRY (entry));
text = gtk_entry_get_text (entry); text = gtk_entry_get_text (entry);
if (text && *text == 0) if (text && *text == 0)
text = NULL; text = NULL;
sp_model_filter_set_filter_func (priv->process_filter, sysprof_model_filter_set_filter_func (priv->process_filter,
sp_profiler_menu_button_filter_func, sysprof_profiler_menu_button_filter_func,
g_strdup (text), g_strdup (text),
g_free); g_free);
} }
static void static void
sp_profiler_menu_button_constructed (GObject *object) sysprof_profiler_menu_button_constructed (GObject *object)
{ {
SpProfilerMenuButton *self = (SpProfilerMenuButton *)object; SysprofProfilerMenuButton *self = (SysprofProfilerMenuButton *)object;
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
priv->process_filter = sp_model_filter_new (G_LIST_MODEL (priv->process_model)); priv->process_filter = sysprof_model_filter_new (G_LIST_MODEL (priv->process_model));
gtk_list_box_bind_model (priv->process_list_box, gtk_list_box_bind_model (priv->process_list_box,
G_LIST_MODEL (priv->process_filter), G_LIST_MODEL (priv->process_filter),
sp_profiler_menu_button_create_row, sysprof_profiler_menu_button_create_row,
self, NULL); self, NULL);
G_OBJECT_CLASS (sp_profiler_menu_button_parent_class)->constructed (object); G_OBJECT_CLASS (sysprof_profiler_menu_button_parent_class)->constructed (object);
} }
static void static void
sp_profiler_menu_button_realize (GtkWidget *widget) sysprof_profiler_menu_button_realize (GtkWidget *widget)
{ {
SpProfilerMenuButton *self = (SpProfilerMenuButton *)widget; SysprofProfilerMenuButton *self = (SysprofProfilerMenuButton *)widget;
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_autoptr(GSettings) settings = NULL; g_autoptr(GSettings) settings = NULL;
g_auto(GStrv) env = NULL; g_auto(GStrv) env = NULL;
GTK_WIDGET_CLASS (sp_profiler_menu_button_parent_class)->realize (widget); GTK_WIDGET_CLASS (sysprof_profiler_menu_button_parent_class)->realize (widget);
settings = g_settings_new ("org.gnome.sysprof2"); settings = g_settings_new ("org.gnome.sysprof2");
@ -475,13 +475,13 @@ sp_profiler_menu_button_realize (GtkWidget *widget)
static gboolean static gboolean
save_environ_to_gsettings (gpointer data) save_environ_to_gsettings (gpointer data)
{ {
SpProfilerMenuButton *self = data; SysprofProfilerMenuButton *self = data;
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_autoptr(GPtrArray) ar = NULL; g_autoptr(GPtrArray) ar = NULL;
g_autoptr(GSettings) settings = NULL; g_autoptr(GSettings) settings = NULL;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
priv->save_env_source = 0; priv->save_env_source = 0;
@ -521,14 +521,14 @@ save_environ_to_gsettings (gpointer data)
static void static void
sp_profiler_menu_button_destroy (GtkWidget *widget) sysprof_profiler_menu_button_destroy (GtkWidget *widget)
{ {
SpProfilerMenuButton *self = (SpProfilerMenuButton *)widget; SysprofProfilerMenuButton *self = (SysprofProfilerMenuButton *)widget;
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
if (priv->profiler != NULL) if (priv->profiler != NULL)
{ {
sp_profiler_menu_button_disconnect (self); sysprof_profiler_menu_button_disconnect (self);
g_clear_object (&priv->profiler); g_clear_object (&priv->profiler);
} }
@ -540,21 +540,21 @@ sp_profiler_menu_button_destroy (GtkWidget *widget)
priv->save_env_source = 0; priv->save_env_source = 0;
} }
GTK_WIDGET_CLASS (sp_profiler_menu_button_parent_class)->destroy (widget); GTK_WIDGET_CLASS (sysprof_profiler_menu_button_parent_class)->destroy (widget);
} }
static void static void
sp_profiler_menu_button_get_property (GObject *object, sysprof_profiler_menu_button_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpProfilerMenuButton *self = SP_PROFILER_MENU_BUTTON (object); SysprofProfilerMenuButton *self = SYSPROF_PROFILER_MENU_BUTTON (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_PROFILER: case PROP_PROFILER:
g_value_set_object (value, sp_profiler_menu_button_get_profiler (self)); g_value_set_object (value, sysprof_profiler_menu_button_get_profiler (self));
break; break;
default: default:
@ -563,17 +563,17 @@ sp_profiler_menu_button_get_property (GObject *object,
} }
static void static void
sp_profiler_menu_button_set_property (GObject *object, sysprof_profiler_menu_button_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpProfilerMenuButton *self = SP_PROFILER_MENU_BUTTON (object); SysprofProfilerMenuButton *self = SYSPROF_PROFILER_MENU_BUTTON (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_PROFILER: case PROP_PROFILER:
sp_profiler_menu_button_set_profiler (self, g_value_get_object (value)); sysprof_profiler_menu_button_set_profiler (self, g_value_get_object (value));
break; break;
default: default:
@ -582,61 +582,61 @@ sp_profiler_menu_button_set_property (GObject *object,
} }
static void static void
sp_profiler_menu_button_class_init (SpProfilerMenuButtonClass *klass) sysprof_profiler_menu_button_class_init (SysprofProfilerMenuButtonClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkButtonClass *button_class = GTK_BUTTON_CLASS (klass); GtkButtonClass *button_class = GTK_BUTTON_CLASS (klass);
object_class->constructed = sp_profiler_menu_button_constructed; object_class->constructed = sysprof_profiler_menu_button_constructed;
object_class->get_property = sp_profiler_menu_button_get_property; object_class->get_property = sysprof_profiler_menu_button_get_property;
object_class->set_property = sp_profiler_menu_button_set_property; object_class->set_property = sysprof_profiler_menu_button_set_property;
widget_class->destroy = sp_profiler_menu_button_destroy; widget_class->destroy = sysprof_profiler_menu_button_destroy;
widget_class->realize = sp_profiler_menu_button_realize; widget_class->realize = sysprof_profiler_menu_button_realize;
button_class->clicked = sp_profiler_menu_button_clicked; button_class->clicked = sysprof_profiler_menu_button_clicked;
properties [PROP_PROFILER] = properties [PROP_PROFILER] =
g_param_spec_object ("profiler", g_param_spec_object ("profiler",
"Profiler", "Profiler",
"Profiler", "Profiler",
SP_TYPE_PROFILER, SYSPROF_TYPE_PROFILER,
(G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sp-profiler-menu-button.ui"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sysprof-profiler-menu-button.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_key_column); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, env_key_column);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_tree_view); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, env_tree_view);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_value_column); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, env_value_column);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, environment_model); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, environment_model);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, inherit_environ); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, inherit_environ);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, key_cell); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, key_cell);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, label); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, label);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, popover); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, popover);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, process_filter_entry); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, process_filter_entry);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, process_list_box); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, process_list_box);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, process_model); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, process_model);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, processes_box); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, processes_box);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, spawn_entry); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, spawn_entry);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, stack); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, stack);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, value_cell); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, value_cell);
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, whole_system_switch); gtk_widget_class_bind_template_child_private (widget_class, SysprofProfilerMenuButton, whole_system_switch);
} }
static void static void
sp_profiler_menu_button_env_row_changed (SpProfilerMenuButton *self, sysprof_profiler_menu_button_env_row_changed (SysprofProfilerMenuButton *self,
GtkTreePath *tree_path, GtkTreePath *tree_path,
GtkTreeIter *tree_iter, GtkTreeIter *tree_iter,
gpointer user_data) gpointer user_data)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_autoptr(GPtrArray) env = NULL; g_autoptr(GPtrArray) env = NULL;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (GTK_IS_TREE_MODEL (priv->environment_model)); g_assert (GTK_IS_TREE_MODEL (priv->environment_model));
/* queue saving settings to gsettings */ /* queue saving settings to gsettings */
@ -673,14 +673,14 @@ sp_profiler_menu_button_env_row_changed (SpProfilerMenuButton *self,
while (gtk_tree_model_iter_next (model, &iter)); while (gtk_tree_model_iter_next (model, &iter));
} }
g_ptr_array_add (env, NULL); g_ptr_array_add (env, NULL);
sp_profiler_set_spawn_env (priv->profiler, (const gchar * const *)env->pdata); sysprof_profiler_set_spawn_env (priv->profiler, (const gchar * const *)env->pdata);
} }
static void static void
on_backspace (SpProfilerMenuButton *self, on_backspace (SysprofProfilerMenuButton *self,
GtkEntry *entry) GtkEntry *entry)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
if (g_object_get_data (G_OBJECT (entry), "CELL_WAS_EMPTY")) if (g_object_get_data (G_OBJECT (entry), "CELL_WAS_EMPTY"))
{ {
@ -703,7 +703,7 @@ on_backspace (SpProfilerMenuButton *self,
} }
static void static void
sp_profiler_menu_button_env_key_editing_started (SpProfilerMenuButton *self, sysprof_profiler_menu_button_env_key_editing_started (SysprofProfilerMenuButton *self,
GtkCellEditable *editable, GtkCellEditable *editable,
const gchar *path, const gchar *path,
GtkCellRenderer *cell) GtkCellRenderer *cell)
@ -716,17 +716,17 @@ sp_profiler_menu_button_env_key_editing_started (SpProfilerMenuButton *self,
} }
static void static void
sp_profiler_menu_button_env_key_edited (SpProfilerMenuButton *self, sysprof_profiler_menu_button_env_key_edited (SysprofProfilerMenuButton *self,
const gchar *path, const gchar *path,
const gchar *new_text, const gchar *new_text,
GtkCellRendererText *cell) GtkCellRendererText *cell)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
GtkTreeModel *model; GtkTreeModel *model;
GtkTreePath *tree_path; GtkTreePath *tree_path;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (path != NULL); g_assert (path != NULL);
g_assert (new_text != NULL); g_assert (new_text != NULL);
g_assert (GTK_IS_CELL_RENDERER_TEXT (cell)); g_assert (GTK_IS_CELL_RENDERER_TEXT (cell));
@ -755,18 +755,18 @@ sp_profiler_menu_button_env_key_edited (SpProfilerMenuButton *self,
} }
static void static void
sp_profiler_menu_button_env_value_edited (SpProfilerMenuButton *self, sysprof_profiler_menu_button_env_value_edited (SysprofProfilerMenuButton *self,
const gchar *path, const gchar *path,
const gchar *new_text, const gchar *new_text,
GtkCellRendererText *cell) GtkCellRendererText *cell)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
GtkTreeModel *model; GtkTreeModel *model;
GtkTreePath *tree_path; GtkTreePath *tree_path;
GtkTreeIter iter; GtkTreeIter iter;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (path != NULL); g_assert (path != NULL);
g_assert (new_text != NULL); g_assert (new_text != NULL);
g_assert (GTK_IS_CELL_RENDERER_TEXT (cell)); g_assert (GTK_IS_CELL_RENDERER_TEXT (cell));
@ -797,23 +797,23 @@ sp_profiler_menu_button_env_value_edited (SpProfilerMenuButton *self,
} }
static void static void
sp_profiler_menu_button_validate_spawn (SpProfilerMenuButton *self, sysprof_profiler_menu_button_validate_spawn (SysprofProfilerMenuButton *self,
GtkEntry *entry) GtkEntry *entry)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
g_auto(GStrv) argv = NULL; g_auto(GStrv) argv = NULL;
g_autoptr(GError) error = NULL; g_autoptr(GError) error = NULL;
const gchar *text; const gchar *text;
gint argc; gint argc;
g_assert (SP_IS_PROFILER_MENU_BUTTON (self)); g_assert (SYSPROF_IS_PROFILER_MENU_BUTTON (self));
g_assert (GTK_IS_ENTRY (entry)); g_assert (GTK_IS_ENTRY (entry));
text = gtk_entry_get_text (entry); text = gtk_entry_get_text (entry);
if (text && *text && !g_shell_parse_argv (text, &argc, &argv, &error)) if (text && *text && !g_shell_parse_argv (text, &argc, &argv, &error))
{ {
sp_profiler_set_spawn_argv (priv->profiler, NULL); sysprof_profiler_set_spawn_argv (priv->profiler, NULL);
g_object_set (entry, g_object_set (entry,
"secondary-icon-name", "dialog-warning-symbolic", "secondary-icon-name", "dialog-warning-symbolic",
"secondary-icon-tooltip-text", _("The command line arguments provided are invalid"), "secondary-icon-tooltip-text", _("The command line arguments provided are invalid"),
@ -821,7 +821,7 @@ sp_profiler_menu_button_validate_spawn (SpProfilerMenuButton *self,
} }
else else
{ {
sp_profiler_set_spawn_argv (priv->profiler, (const gchar * const *)argv); sysprof_profiler_set_spawn_argv (priv->profiler, (const gchar * const *)argv);
g_object_set (entry, g_object_set (entry,
"secondary-icon-name", NULL, "secondary-icon-name", NULL,
"secondary-icon-tooltip-text", NULL, "secondary-icon-tooltip-text", NULL,
@ -830,63 +830,63 @@ sp_profiler_menu_button_validate_spawn (SpProfilerMenuButton *self,
} }
static void static void
sp_profiler_menu_button_init (SpProfilerMenuButton *self) sysprof_profiler_menu_button_init (SysprofProfilerMenuButton *self)
{ {
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self); SysprofProfilerMenuButtonPrivate *priv = sysprof_profiler_menu_button_get_instance_private (self);
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));
g_signal_connect_object (priv->process_filter_entry, g_signal_connect_object (priv->process_filter_entry,
"changed", "changed",
G_CALLBACK (sp_profiler_menu_button_filter_changed), G_CALLBACK (sysprof_profiler_menu_button_filter_changed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->spawn_entry, g_signal_connect_object (priv->spawn_entry,
"changed", "changed",
G_CALLBACK (sp_profiler_menu_button_update_label), G_CALLBACK (sysprof_profiler_menu_button_update_label),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->spawn_entry, g_signal_connect_object (priv->spawn_entry,
"changed", "changed",
G_CALLBACK (sp_profiler_menu_button_validate_spawn), G_CALLBACK (sysprof_profiler_menu_button_validate_spawn),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->stack, g_signal_connect_object (priv->stack,
"notify::visible-child", "notify::visible-child",
G_CALLBACK (sp_profiler_menu_button_update_label), G_CALLBACK (sysprof_profiler_menu_button_update_label),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->process_list_box, g_signal_connect_object (priv->process_list_box,
"row-activated", "row-activated",
G_CALLBACK (sp_profiler_menu_button_row_activated), G_CALLBACK (sysprof_profiler_menu_button_row_activated),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->key_cell, g_signal_connect_object (priv->key_cell,
"edited", "edited",
G_CALLBACK (sp_profiler_menu_button_env_key_edited), G_CALLBACK (sysprof_profiler_menu_button_env_key_edited),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->value_cell, g_signal_connect_object (priv->value_cell,
"edited", "edited",
G_CALLBACK (sp_profiler_menu_button_env_value_edited), G_CALLBACK (sysprof_profiler_menu_button_env_value_edited),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (gtk_tree_view_get_model (priv->env_tree_view), g_signal_connect_object (gtk_tree_view_get_model (priv->env_tree_view),
"row-changed", "row-changed",
G_CALLBACK (sp_profiler_menu_button_env_row_changed), G_CALLBACK (sysprof_profiler_menu_button_env_row_changed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->key_cell, g_signal_connect_object (priv->key_cell,
"editing-started", "editing-started",
G_CALLBACK (sp_profiler_menu_button_env_key_editing_started), G_CALLBACK (sysprof_profiler_menu_button_env_key_editing_started),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);

View File

@ -1,4 +1,4 @@
/* sp-profiler-menu-button.h /* sysprof-profiler-menu-button.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,17 +22,17 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-profiler.h" #include "sysprof-profiler.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_PROFILER_MENU_BUTTON (sp_profiler_menu_button_get_type()) #define SYSPROF_TYPE_PROFILER_MENU_BUTTON (sysprof_profiler_menu_button_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpProfilerMenuButton, sp_profiler_menu_button, SP, PROFILER_MENU_BUTTON, GtkMenuButton) G_DECLARE_DERIVABLE_TYPE (SysprofProfilerMenuButton, sysprof_profiler_menu_button, SYSPROF, PROFILER_MENU_BUTTON, GtkMenuButton)
struct _SpProfilerMenuButtonClass struct _SysprofProfilerMenuButtonClass
{ {
GtkMenuButtonClass parent_class; GtkMenuButtonClass parent_class;
@ -40,11 +40,11 @@ struct _SpProfilerMenuButtonClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_profiler_menu_button_new (void); GtkWidget *sysprof_profiler_menu_button_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_menu_button_set_profiler (SpProfilerMenuButton *self, void sysprof_profiler_menu_button_set_profiler (SysprofProfilerMenuButton *self,
SpProfiler *profiler); SysprofProfiler *profiler);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpProfiler *sp_profiler_menu_button_get_profiler (SpProfilerMenuButton *self); SysprofProfiler *sysprof_profiler_menu_button_get_profiler (SysprofProfilerMenuButton *self);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-recording-state-view.c /* sysprof-recording-state-view.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,16 +20,16 @@
#include "config.h" #include "config.h"
#include "sp-recording-state-view.h" #include "sysprof-recording-state-view.h"
typedef struct typedef struct
{ {
SpProfiler *profiler; SysprofProfiler *profiler;
gulong notify_elapsed_handler; gulong notify_elapsed_handler;
GtkLabel *elapsed; GtkLabel *elapsed;
} SpRecordingStateViewPrivate; } SysprofRecordingStateViewPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SpRecordingStateView, sp_recording_state_view, GTK_TYPE_BIN) G_DEFINE_TYPE_WITH_PRIVATE (SysprofRecordingStateView, sysprof_recording_state_view, GTK_TYPE_BIN)
enum { enum {
PROP_0, PROP_0,
@ -40,27 +40,27 @@ enum {
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
GtkWidget * GtkWidget *
sp_recording_state_view_new (void) sysprof_recording_state_view_new (void)
{ {
return g_object_new (SP_TYPE_RECORDING_STATE_VIEW, NULL); return g_object_new (SYSPROF_TYPE_RECORDING_STATE_VIEW, NULL);
} }
static void static void
sp_recording_state_view_notify_elapsed (SpRecordingStateView *self, sysprof_recording_state_view_notify_elapsed (SysprofRecordingStateView *self,
GParamSpec *pspec, GParamSpec *pspec,
SpProfiler *profiler) SysprofProfiler *profiler)
{ {
SpRecordingStateViewPrivate *priv = sp_recording_state_view_get_instance_private (self); SysprofRecordingStateViewPrivate *priv = sysprof_recording_state_view_get_instance_private (self);
g_autofree gchar *str = NULL; g_autofree gchar *str = NULL;
gint64 elapsed; gint64 elapsed;
guint hours; guint hours;
guint minutes; guint minutes;
guint seconds; guint seconds;
g_assert (SP_IS_RECORDING_STATE_VIEW (self)); g_assert (SYSPROF_IS_RECORDING_STATE_VIEW (self));
g_assert (SP_IS_PROFILER (profiler)); g_assert (SYSPROF_IS_PROFILER (profiler));
elapsed = (gint64)sp_profiler_get_elapsed (profiler); elapsed = (gint64)sysprof_profiler_get_elapsed (profiler);
hours = elapsed / (60 * 60); hours = elapsed / (60 * 60);
if (hours > 0) if (hours > 0)
@ -78,10 +78,10 @@ sp_recording_state_view_notify_elapsed (SpRecordingStateView *self,
} }
static void static void
sp_recording_state_view_destroy (GtkWidget *widget) sysprof_recording_state_view_destroy (GtkWidget *widget)
{ {
SpRecordingStateView *self = (SpRecordingStateView *)widget; SysprofRecordingStateView *self = (SysprofRecordingStateView *)widget;
SpRecordingStateViewPrivate *priv = sp_recording_state_view_get_instance_private (self); SysprofRecordingStateViewPrivate *priv = sysprof_recording_state_view_get_instance_private (self);
if (priv->profiler != NULL) if (priv->profiler != NULL)
{ {
@ -89,17 +89,17 @@ sp_recording_state_view_destroy (GtkWidget *widget)
g_clear_object (&priv->profiler); g_clear_object (&priv->profiler);
} }
GTK_WIDGET_CLASS (sp_recording_state_view_parent_class)->destroy (widget); GTK_WIDGET_CLASS (sysprof_recording_state_view_parent_class)->destroy (widget);
} }
static void static void
sp_recording_state_view_get_property (GObject *object, sysprof_recording_state_view_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpRecordingStateView *self = SP_RECORDING_STATE_VIEW (object); SysprofRecordingStateView *self = SYSPROF_RECORDING_STATE_VIEW (object);
SpRecordingStateViewPrivate *priv = sp_recording_state_view_get_instance_private (self); SysprofRecordingStateViewPrivate *priv = sysprof_recording_state_view_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -113,17 +113,17 @@ sp_recording_state_view_get_property (GObject *object,
} }
static void static void
sp_recording_state_view_set_property (GObject *object, sysprof_recording_state_view_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpRecordingStateView *self = SP_RECORDING_STATE_VIEW (object); SysprofRecordingStateView *self = SYSPROF_RECORDING_STATE_VIEW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_PROFILER: case PROP_PROFILER:
sp_recording_state_view_set_profiler (self, g_value_get_object (value)); sysprof_recording_state_view_set_profiler (self, g_value_get_object (value));
break; break;
default: default:
@ -132,44 +132,44 @@ sp_recording_state_view_set_property (GObject *object,
} }
static void static void
sp_recording_state_view_class_init (SpRecordingStateViewClass *klass) sysprof_recording_state_view_class_init (SysprofRecordingStateViewClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->get_property = sp_recording_state_view_get_property; object_class->get_property = sysprof_recording_state_view_get_property;
object_class->set_property = sp_recording_state_view_set_property; object_class->set_property = sysprof_recording_state_view_set_property;
widget_class->destroy = sp_recording_state_view_destroy; widget_class->destroy = sysprof_recording_state_view_destroy;
properties [PROP_PROFILER] = properties [PROP_PROFILER] =
g_param_spec_object ("profiler", g_param_spec_object ("profiler",
"Profiler", "Profiler",
"Profiler", "Profiler",
SP_TYPE_PROFILER, SYSPROF_TYPE_PROFILER,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
gtk_widget_class_set_template_from_resource (widget_class, gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/sysprof/ui/sp-recording-state-view.ui"); "/org/gnome/sysprof/ui/sysprof-recording-state-view.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpRecordingStateView, elapsed); gtk_widget_class_bind_template_child_private (widget_class, SysprofRecordingStateView, elapsed);
} }
static void static void
sp_recording_state_view_init (SpRecordingStateView *self) sysprof_recording_state_view_init (SysprofRecordingStateView *self)
{ {
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));
} }
void void
sp_recording_state_view_set_profiler (SpRecordingStateView *self, sysprof_recording_state_view_set_profiler (SysprofRecordingStateView *self,
SpProfiler *profiler) SysprofProfiler *profiler)
{ {
SpRecordingStateViewPrivate *priv = sp_recording_state_view_get_instance_private (self); SysprofRecordingStateViewPrivate *priv = sysprof_recording_state_view_get_instance_private (self);
g_assert (SP_IS_RECORDING_STATE_VIEW (self)); g_assert (SYSPROF_IS_RECORDING_STATE_VIEW (self));
g_assert (!profiler || SP_IS_PROFILER (profiler)); g_assert (!profiler || SYSPROF_IS_PROFILER (profiler));
gtk_label_set_label (priv->elapsed, "00:00"); gtk_label_set_label (priv->elapsed, "00:00");
@ -189,7 +189,7 @@ sp_recording_state_view_set_profiler (SpRecordingStateView *self,
priv->notify_elapsed_handler = priv->notify_elapsed_handler =
g_signal_connect_object (profiler, g_signal_connect_object (profiler,
"notify::elapsed", "notify::elapsed",
G_CALLBACK (sp_recording_state_view_notify_elapsed), G_CALLBACK (sysprof_recording_state_view_notify_elapsed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
} }

View File

@ -1,4 +1,4 @@
/* sp-recording-state-view.h /* sysprof-recording-state-view.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,17 +22,17 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-profiler.h" #include "sysprof-profiler.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_RECORDING_STATE_VIEW (sp_recording_state_view_get_type()) #define SYSPROF_TYPE_RECORDING_STATE_VIEW (sysprof_recording_state_view_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpRecordingStateView, sp_recording_state_view, SP, RECORDING_STATE_VIEW, GtkBin) G_DECLARE_DERIVABLE_TYPE (SysprofRecordingStateView, sysprof_recording_state_view, SYSPROF, RECORDING_STATE_VIEW, GtkBin)
struct _SpRecordingStateViewClass struct _SysprofRecordingStateViewClass
{ {
GtkBinClass parent; GtkBinClass parent;
@ -40,9 +40,9 @@ struct _SpRecordingStateViewClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_recording_state_view_new (void); GtkWidget *sysprof_recording_state_view_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_recording_state_view_set_profiler (SpRecordingStateView *self, void sysprof_recording_state_view_set_profiler (SysprofRecordingStateView *self,
SpProfiler *profiler); SysprofProfiler *profiler);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-theme-manager.c /* sysprof-theme-manager.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,13 +18,13 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-theme-manager" #define G_LOG_DOMAIN "sysprof-theme-manager"
#include "config.h" #include "config.h"
#include "sp-theme-manager.h" #include "sysprof-theme-manager.h"
struct _SpThemeManager struct _SysprofThemeManager
{ {
GObject parent_instance; GObject parent_instance;
GHashTable *theme_resources; GHashTable *theme_resources;
@ -42,7 +42,7 @@ typedef struct
GtkCssProvider *provider; GtkCssProvider *provider;
} ThemeResource; } ThemeResource;
G_DEFINE_TYPE (SpThemeManager, sp_theme_manager, G_TYPE_OBJECT) G_DEFINE_TYPE (SysprofThemeManager, sysprof_theme_manager, G_TYPE_OBJECT)
static void static void
theme_resource_free (gpointer data) theme_resource_free (gpointer data)
@ -98,14 +98,14 @@ theme_resource_matches (ThemeResource *theme_resource,
} }
static gboolean static gboolean
sp_theme_manager_do_reload (gpointer data) sysprof_theme_manager_do_reload (gpointer data)
{ {
SpThemeManager *self = data; SysprofThemeManager *self = data;
ThemeResource *theme_resource; ThemeResource *theme_resource;
GHashTableIter iter; GHashTableIter iter;
GtkSettings *settings; GtkSettings *settings;
g_assert (SP_IS_THEME_MANAGER (self)); g_assert (SYSPROF_IS_THEME_MANAGER (self));
self->reload_source = 0; self->reload_source = 0;
@ -141,21 +141,21 @@ sp_theme_manager_do_reload (gpointer data)
} }
static void static void
sp_theme_manager_queue_reload (SpThemeManager *self) sysprof_theme_manager_queue_reload (SysprofThemeManager *self)
{ {
g_assert (SP_IS_THEME_MANAGER (self)); g_assert (SYSPROF_IS_THEME_MANAGER (self));
if (self->reload_source == 0) if (self->reload_source == 0)
self->reload_source = gdk_threads_add_idle_full (G_PRIORITY_LOW, self->reload_source = gdk_threads_add_idle_full (G_PRIORITY_LOW,
sp_theme_manager_do_reload, sysprof_theme_manager_do_reload,
self, self,
NULL); NULL);
} }
static void static void
sp_theme_manager_finalize (GObject *object) sysprof_theme_manager_finalize (GObject *object)
{ {
SpThemeManager *self = (SpThemeManager *)object; SysprofThemeManager *self = (SysprofThemeManager *)object;
if (self->reload_source != 0) if (self->reload_source != 0)
{ {
@ -165,19 +165,19 @@ sp_theme_manager_finalize (GObject *object)
g_clear_pointer (&self->theme_resources, g_hash_table_unref); g_clear_pointer (&self->theme_resources, g_hash_table_unref);
G_OBJECT_CLASS (sp_theme_manager_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_theme_manager_parent_class)->finalize (object);
} }
static void static void
sp_theme_manager_class_init (SpThemeManagerClass *klass) sysprof_theme_manager_class_init (SysprofThemeManagerClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_theme_manager_finalize; object_class->finalize = sysprof_theme_manager_finalize;
} }
static void static void
sp_theme_manager_init (SpThemeManager *self) sysprof_theme_manager_init (SysprofThemeManager *self)
{ {
self->theme_resources = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, theme_resource_free); self->theme_resources = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, theme_resource_free);
@ -185,23 +185,23 @@ sp_theme_manager_init (SpThemeManager *self)
} }
/** /**
* sp_theme_manager_get_default: * sysprof_theme_manager_get_default:
* *
* Returns: (transfer none): An #SpThemeManager * Returns: (transfer none): An #SysprofThemeManager
*/ */
SpThemeManager * SysprofThemeManager *
sp_theme_manager_get_default (void) sysprof_theme_manager_get_default (void)
{ {
static SpThemeManager *instance; static SysprofThemeManager *instance;
if (instance == NULL) if (instance == NULL)
instance = g_object_new (SP_TYPE_THEME_MANAGER, NULL); instance = g_object_new (SYSPROF_TYPE_THEME_MANAGER, NULL);
return instance; return instance;
} }
guint guint
sp_theme_manager_register_resource (SpThemeManager *self, sysprof_theme_manager_register_resource (SysprofThemeManager *self,
const gchar *theme_name, const gchar *theme_name,
const gchar *variant, const gchar *variant,
const gchar *resource) const gchar *resource)
@ -210,7 +210,7 @@ sp_theme_manager_register_resource (SpThemeManager *self,
static guint counter; static guint counter;
guint id; guint id;
g_return_val_if_fail (SP_IS_THEME_MANAGER (self), 0); g_return_val_if_fail (SYSPROF_IS_THEME_MANAGER (self), 0);
theme_resource = g_slice_new0 (ThemeResource); theme_resource = g_slice_new0 (ThemeResource);
theme_resource->id = id = ++counter; theme_resource->id = id = ++counter;
@ -230,29 +230,29 @@ sp_theme_manager_register_resource (SpThemeManager *self,
self->registered_signals = TRUE; self->registered_signals = TRUE;
g_signal_connect_object (gtk_settings_get_default (), g_signal_connect_object (gtk_settings_get_default (),
"notify::gtk-application-prefer-dark-theme", "notify::gtk-application-prefer-dark-theme",
G_CALLBACK (sp_theme_manager_queue_reload), G_CALLBACK (sysprof_theme_manager_queue_reload),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (gtk_settings_get_default (), g_signal_connect_object (gtk_settings_get_default (),
"notify::gtk-theme-name", "notify::gtk-theme-name",
G_CALLBACK (sp_theme_manager_queue_reload), G_CALLBACK (sysprof_theme_manager_queue_reload),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
} }
sp_theme_manager_queue_reload (self); sysprof_theme_manager_queue_reload (self);
return id; return id;
} }
void void
sp_theme_manager_unregister (SpThemeManager *self, sysprof_theme_manager_unregister (SysprofThemeManager *self,
guint registration_id) guint registration_id)
{ {
GHashTableIter iter; GHashTableIter iter;
ThemeResource *theme_resource; ThemeResource *theme_resource;
g_return_if_fail (SP_IS_THEME_MANAGER (self)); g_return_if_fail (SYSPROF_IS_THEME_MANAGER (self));
g_hash_table_iter_init (&iter, self->theme_resources); g_hash_table_iter_init (&iter, self->theme_resources);

View File

@ -1,4 +1,4 @@
/* sp-theme-manager.h /* sysprof-theme-manager.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -24,18 +24,18 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_THEME_MANAGER (sp_theme_manager_get_type()) #define SYSPROF_TYPE_THEME_MANAGER (sysprof_theme_manager_get_type())
G_GNUC_INTERNAL G_GNUC_INTERNAL
G_DECLARE_FINAL_TYPE (SpThemeManager, sp_theme_manager, SP, THEME_MANAGER, GObject) G_DECLARE_FINAL_TYPE (SysprofThemeManager, sysprof_theme_manager, SYSPROF, THEME_MANAGER, GObject)
G_GNUC_INTERNAL G_GNUC_INTERNAL
SpThemeManager *sp_theme_manager_get_default (void); SysprofThemeManager *sysprof_theme_manager_get_default (void);
G_GNUC_INTERNAL G_GNUC_INTERNAL
void sp_theme_manager_unregister (SpThemeManager *self, void sysprof_theme_manager_unregister (SysprofThemeManager *self,
guint registration_id); guint registration_id);
G_GNUC_INTERNAL G_GNUC_INTERNAL
guint sp_theme_manager_register_resource (SpThemeManager *self, guint sysprof_theme_manager_register_resource (SysprofThemeManager *self,
const gchar *theme_name, const gchar *theme_name,
const gchar *variant, const gchar *variant,
const gchar *resource); const gchar *resource);

View File

@ -26,22 +26,22 @@ G_BEGIN_DECLS
#define SYSPROF_UI_INSIDE #define SYSPROF_UI_INSIDE
# include "sp-callgraph-view.h" # include "sysprof-callgraph-view.h"
# include "sp-cell-renderer-percent.h" # include "sysprof-cell-renderer-percent.h"
# include "sp-cpu-visualizer-row.h" # include "sysprof-cpu-visualizer-row.h"
# include "sp-failed-state-view.h" # include "sysprof-failed-state-view.h"
# include "sp-line-visualizer-row.h" # include "sysprof-line-visualizer-row.h"
# include "sp-empty-state-view.h" # include "sysprof-empty-state-view.h"
# include "sp-model-filter.h" # include "sysprof-model-filter.h"
# include "sp-multi-paned.h" # include "sysprof-multi-paned.h"
# include "sp-recording-state-view.h" # include "sysprof-recording-state-view.h"
# include "sp-process-model.h" # include "sysprof-process-model.h"
# include "sp-process-model-item.h" # include "sysprof-process-model-item.h"
# include "sp-process-model-row.h" # include "sysprof-process-model-row.h"
# include "sp-profiler-menu-button.h" # include "sysprof-profiler-menu-button.h"
# include "sp-visualizer-row.h" # include "sysprof-visualizer-row.h"
# include "sp-visualizer-view.h" # include "sysprof-visualizer-view.h"
# include "sp-zoom-manager.h" # include "sysprof-zoom-manager.h"
#undef SYSPROF_UI_INSIDE #undef SYSPROF_UI_INSIDE

View File

@ -1,4 +1,4 @@
/* sp-visualizer-list.c /* sysprof-visualizer-list.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,33 +18,33 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-visualizer-list" #define G_LOG_DOMAIN "sysprof-visualizer-list"
#include "config.h" #include "config.h"
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <sysprof.h> #include <sysprof.h>
#include "sp-cpu-visualizer-row.h" #include "sysprof-cpu-visualizer-row.h"
#include "sp-visualizer-list.h" #include "sysprof-visualizer-list.h"
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
#include "sp-mark-visualizer-row.h" #include "sysprof-mark-visualizer-row.h"
#include "sp-zoom-manager.h" #include "sysprof-zoom-manager.h"
#define NSEC_PER_SEC G_GUINT64_CONSTANT(1000000000) #define NSEC_PER_SEC G_GUINT64_CONSTANT(1000000000)
#define DEFAULT_PIXELS_PER_SECOND 20 #define DEFAULT_PIXELS_PER_SECOND 20
typedef struct typedef struct
{ {
SpCaptureReader *reader; SysprofCaptureReader *reader;
SpZoomManager *zoom_manager; SysprofZoomManager *zoom_manager;
gint64 begin_time; gint64 begin_time;
gint64 end_time; gint64 end_time;
} SpVisualizerListPrivate; } SysprofVisualizerListPrivate;
typedef struct typedef struct
{ {
SpCaptureCursor *cursor; SysprofCaptureCursor *cursor;
GHashTable *mark_groups; GHashTable *mark_groups;
guint fps_counter; guint fps_counter;
GArray *memory; GArray *memory;
@ -58,7 +58,7 @@ enum {
N_PROPS N_PROPS
}; };
G_DEFINE_TYPE_WITH_PRIVATE (SpVisualizerList, sp_visualizer_list, GTK_TYPE_LIST_BOX) G_DEFINE_TYPE_WITH_PRIVATE (SysprofVisualizerList, sysprof_visualizer_list, GTK_TYPE_LIST_BOX)
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
@ -67,53 +67,53 @@ discovery_free (Discovery *state)
{ {
g_clear_pointer (&state->mark_groups, g_hash_table_unref); g_clear_pointer (&state->mark_groups, g_hash_table_unref);
g_clear_pointer (&state->memory, g_array_unref); g_clear_pointer (&state->memory, g_array_unref);
g_clear_pointer (&state->cursor, sp_capture_cursor_unref); g_clear_pointer (&state->cursor, sysprof_capture_cursor_unref);
g_slice_free (Discovery, state); g_slice_free (Discovery, state);
} }
static void static void
sp_visualizer_list_add (GtkContainer *container, sysprof_visualizer_list_add (GtkContainer *container,
GtkWidget *widget) GtkWidget *widget)
{ {
SpVisualizerList *self = (SpVisualizerList *)container; SysprofVisualizerList *self = (SysprofVisualizerList *)container;
SpVisualizerListPrivate *priv = sp_visualizer_list_get_instance_private (self); SysprofVisualizerListPrivate *priv = sysprof_visualizer_list_get_instance_private (self);
GTK_CONTAINER_CLASS (sp_visualizer_list_parent_class)->add (container, widget); GTK_CONTAINER_CLASS (sysprof_visualizer_list_parent_class)->add (container, widget);
if (SP_IS_VISUALIZER_ROW (widget)) if (SYSPROF_IS_VISUALIZER_ROW (widget))
{ {
sp_visualizer_row_set_reader (SP_VISUALIZER_ROW (widget), priv->reader); sysprof_visualizer_row_set_reader (SYSPROF_VISUALIZER_ROW (widget), priv->reader);
sp_visualizer_row_set_zoom_manager (SP_VISUALIZER_ROW (widget), priv->zoom_manager); sysprof_visualizer_row_set_zoom_manager (SYSPROF_VISUALIZER_ROW (widget), priv->zoom_manager);
} }
} }
static void static void
sp_visualizer_list_finalize (GObject *object) sysprof_visualizer_list_finalize (GObject *object)
{ {
SpVisualizerList *self = (SpVisualizerList *)object; SysprofVisualizerList *self = (SysprofVisualizerList *)object;
SpVisualizerListPrivate *priv = sp_visualizer_list_get_instance_private (self); SysprofVisualizerListPrivate *priv = sysprof_visualizer_list_get_instance_private (self);
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
G_OBJECT_CLASS (sp_visualizer_list_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_visualizer_list_parent_class)->finalize (object);
} }
static void static void
sp_visualizer_list_get_property (GObject *object, sysprof_visualizer_list_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpVisualizerList *self = SP_VISUALIZER_LIST (object); SysprofVisualizerList *self = SYSPROF_VISUALIZER_LIST (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_READER: case PROP_READER:
g_value_set_boxed (value, sp_visualizer_list_get_reader (self)); g_value_set_boxed (value, sysprof_visualizer_list_get_reader (self));
break; break;
case PROP_ZOOM_MANAGER: case PROP_ZOOM_MANAGER:
g_value_set_object (value, sp_visualizer_list_get_zoom_manager (self)); g_value_set_object (value, sysprof_visualizer_list_get_zoom_manager (self));
break; break;
default: default:
@ -122,21 +122,21 @@ sp_visualizer_list_get_property (GObject *object,
} }
static void static void
sp_visualizer_list_set_property (GObject *object, sysprof_visualizer_list_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpVisualizerList *self = SP_VISUALIZER_LIST (object); SysprofVisualizerList *self = SYSPROF_VISUALIZER_LIST (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_READER: case PROP_READER:
sp_visualizer_list_set_reader (self, g_value_get_boxed (value)); sysprof_visualizer_list_set_reader (self, g_value_get_boxed (value));
break; break;
case PROP_ZOOM_MANAGER: case PROP_ZOOM_MANAGER:
sp_visualizer_list_set_zoom_manager (self, g_value_get_object (value)); sysprof_visualizer_list_set_zoom_manager (self, g_value_get_object (value));
break; break;
default: default:
@ -145,64 +145,64 @@ sp_visualizer_list_set_property (GObject *object,
} }
static void static void
sp_visualizer_list_class_init (SpVisualizerListClass *klass) sysprof_visualizer_list_class_init (SysprofVisualizerListClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass); GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
object_class->finalize = sp_visualizer_list_finalize; object_class->finalize = sysprof_visualizer_list_finalize;
object_class->get_property = sp_visualizer_list_get_property; object_class->get_property = sysprof_visualizer_list_get_property;
object_class->set_property = sp_visualizer_list_set_property; object_class->set_property = sysprof_visualizer_list_set_property;
container_class->add = sp_visualizer_list_add; container_class->add = sysprof_visualizer_list_add;
properties [PROP_READER] = properties [PROP_READER] =
g_param_spec_boxed ("reader", g_param_spec_boxed ("reader",
"Reader", "Reader",
"The capture reader", "The capture reader",
SP_TYPE_CAPTURE_READER, SYSPROF_TYPE_CAPTURE_READER,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties [PROP_ZOOM_MANAGER] = properties [PROP_ZOOM_MANAGER] =
g_param_spec_object ("zoom-manager", g_param_spec_object ("zoom-manager",
"Zoom Manager", "Zoom Manager",
"The zoom manager", "The zoom manager",
SP_TYPE_ZOOM_MANAGER, SYSPROF_TYPE_ZOOM_MANAGER,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
} }
static void static void
sp_visualizer_list_init (SpVisualizerList *self) sysprof_visualizer_list_init (SysprofVisualizerList *self)
{ {
} }
GtkWidget * GtkWidget *
sp_visualizer_list_new (void) sysprof_visualizer_list_new (void)
{ {
return g_object_new (SP_TYPE_VISUALIZER_ROW, NULL); return g_object_new (SYSPROF_TYPE_VISUALIZER_ROW, NULL);
} }
/** /**
* sp_visualizer_list_get_reader: * sysprof_visualizer_list_get_reader:
* *
* Gets the reader that is being used for the #SpVisualizerList. * Gets the reader that is being used for the #SysprofVisualizerList.
* *
* Returns: (transfer none): An #SpCaptureReader * Returns: (transfer none): An #SysprofCaptureReader
*/ */
SpCaptureReader * SysprofCaptureReader *
sp_visualizer_list_get_reader (SpVisualizerList *self) sysprof_visualizer_list_get_reader (SysprofVisualizerList *self)
{ {
SpVisualizerListPrivate *priv = sp_visualizer_list_get_instance_private (self); SysprofVisualizerListPrivate *priv = sysprof_visualizer_list_get_instance_private (self);
g_return_val_if_fail (SP_IS_VISUALIZER_LIST (self), NULL); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_LIST (self), NULL);
return priv->reader; return priv->reader;
} }
static gboolean static gboolean
discover_new_rows_frame_cb (const SpCaptureFrame *frame, discover_new_rows_frame_cb (const SysprofCaptureFrame *frame,
gpointer user_data) gpointer user_data)
{ {
Discovery *state = user_data; Discovery *state = user_data;
@ -218,21 +218,21 @@ discover_new_rows_frame_cb (const SpCaptureFrame *frame,
* and widget views to be displayed. * and widget views to be displayed.
*/ */
if (frame->type == SP_CAPTURE_FRAME_MARK) if (frame->type == SYSPROF_CAPTURE_FRAME_MARK)
{ {
const SpCaptureMark *mark = (const SpCaptureMark *)frame; const SysprofCaptureMark *mark = (const SysprofCaptureMark *)frame;
if (!g_hash_table_contains (state->mark_groups, mark->group)) if (!g_hash_table_contains (state->mark_groups, mark->group))
g_hash_table_add (state->mark_groups, g_strdup (mark->group)); g_hash_table_add (state->mark_groups, g_strdup (mark->group));
} }
if (frame->type == SP_CAPTURE_FRAME_CTRDEF) if (frame->type == SYSPROF_CAPTURE_FRAME_CTRDEF)
{ {
const SpCaptureFrameCounterDefine *def = (const SpCaptureFrameCounterDefine *)frame; const SysprofCaptureFrameCounterDefine *def = (const SysprofCaptureFrameCounterDefine *)frame;
for (guint i = 0; i < def->n_counters; i++) for (guint i = 0; i < def->n_counters; i++)
{ {
const SpCaptureCounter *ctr = &def->counters[i]; const SysprofCaptureCounter *ctr = &def->counters[i];
if (!state->has_cpu && if (!state->has_cpu &&
strstr (ctr->category, "CPU Percent") != NULL) strstr (ctr->category, "CPU Percent") != NULL)
@ -263,7 +263,7 @@ discover_new_rows_worker (GTask *task,
g_assert (state != NULL); g_assert (state != NULL);
g_assert (state->cursor != NULL); g_assert (state->cursor != NULL);
sp_capture_cursor_foreach (state->cursor, discover_new_rows_frame_cb, state); sysprof_capture_cursor_foreach (state->cursor, discover_new_rows_frame_cb, state);
g_task_return_boolean (task, TRUE); g_task_return_boolean (task, TRUE);
} }
@ -272,11 +272,11 @@ handle_capture_results (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
SpVisualizerList *self = (SpVisualizerList *)object; SysprofVisualizerList *self = (SysprofVisualizerList *)object;
Discovery *state; Discovery *state;
const gchar *key; const gchar *key;
g_assert (SP_IS_VISUALIZER_LIST (self)); g_assert (SYSPROF_IS_VISUALIZER_LIST (self));
g_assert (G_IS_TASK (result)); g_assert (G_IS_TASK (result));
g_assert (user_data == NULL); g_assert (user_data == NULL);
@ -292,7 +292,7 @@ handle_capture_results (GObject *object,
if (state->has_cpu) if (state->has_cpu)
{ {
GtkWidget *row = g_object_new (SP_TYPE_CPU_VISUALIZER_ROW, GtkWidget *row = g_object_new (SYSPROF_TYPE_CPU_VISUALIZER_ROW,
/* Translators: CPU is the processor. */ /* Translators: CPU is the processor. */
"title", _("CPU"), "title", _("CPU"),
"height-request", 50, "height-request", 50,
@ -308,7 +308,7 @@ handle_capture_results (GObject *object,
{ {
guint counter_id = g_array_index (state->memory, guint, i); guint counter_id = g_array_index (state->memory, guint, i);
GdkRGBA rgba; GdkRGBA rgba;
GtkWidget *row = g_object_new (SP_TYPE_LINE_VISUALIZER_ROW, GtkWidget *row = g_object_new (SYSPROF_TYPE_LINE_VISUALIZER_ROW,
"title", _("Memory Used"), "title", _("Memory Used"),
"height-request", 35, "height-request", 35,
"selectable", FALSE, "selectable", FALSE,
@ -316,16 +316,16 @@ handle_capture_results (GObject *object,
"y-lower", 0.0, "y-lower", 0.0,
NULL); NULL);
gdk_rgba_parse (&rgba, "#204a87"); gdk_rgba_parse (&rgba, "#204a87");
sp_line_visualizer_row_add_counter (SP_LINE_VISUALIZER_ROW (row), counter_id, &rgba); sysprof_line_visualizer_row_add_counter (SYSPROF_LINE_VISUALIZER_ROW (row), counter_id, &rgba);
rgba.alpha = 0.3; rgba.alpha = 0.3;
sp_line_visualizer_row_set_fill (SP_LINE_VISUALIZER_ROW (row), counter_id, &rgba); sysprof_line_visualizer_row_set_fill (SYSPROF_LINE_VISUALIZER_ROW (row), counter_id, &rgba);
gtk_container_add (GTK_CONTAINER (self), row); gtk_container_add (GTK_CONTAINER (self), row);
} }
if (state->fps_counter) if (state->fps_counter)
{ {
GdkRGBA rgba; GdkRGBA rgba;
GtkWidget *row = g_object_new (SP_TYPE_LINE_VISUALIZER_ROW, GtkWidget *row = g_object_new (SYSPROF_TYPE_LINE_VISUALIZER_ROW,
/* Translators: FPS is frames per second. */ /* Translators: FPS is frames per second. */
"title", _("FPS"), "title", _("FPS"),
"height-request", 35, "height-request", 35,
@ -335,9 +335,9 @@ handle_capture_results (GObject *object,
"y-upper", 150.0, "y-upper", 150.0,
NULL); NULL);
gdk_rgba_parse (&rgba, "#204a87"); gdk_rgba_parse (&rgba, "#204a87");
sp_line_visualizer_row_add_counter (SP_LINE_VISUALIZER_ROW (row), state->fps_counter, &rgba); sysprof_line_visualizer_row_add_counter (SYSPROF_LINE_VISUALIZER_ROW (row), state->fps_counter, &rgba);
rgba.alpha = 0.3; rgba.alpha = 0.3;
sp_line_visualizer_row_set_fill (SP_LINE_VISUALIZER_ROW (row), state->fps_counter, &rgba); sysprof_line_visualizer_row_set_fill (SYSPROF_LINE_VISUALIZER_ROW (row), state->fps_counter, &rgba);
gtk_container_add (GTK_CONTAINER (self), row); gtk_container_add (GTK_CONTAINER (self), row);
} }
@ -349,7 +349,7 @@ handle_capture_results (GObject *object,
while (g_hash_table_iter_next (&iter, (gpointer *)&key, NULL)) while (g_hash_table_iter_next (&iter, (gpointer *)&key, NULL))
{ {
GtkWidget *row = g_object_new (SP_TYPE_MARK_VISUALIZER_ROW, GtkWidget *row = g_object_new (SYSPROF_TYPE_MARK_VISUALIZER_ROW,
"group", key, "group", key,
"title", key, "title", key,
"height-request", 50, "height-request", 50,
@ -362,16 +362,16 @@ handle_capture_results (GObject *object,
} }
static void static void
discover_new_rows (SpVisualizerList *self, discover_new_rows (SysprofVisualizerList *self,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
static const SpCaptureFrameType types[] = { SP_CAPTURE_FRAME_CTRDEF, SP_CAPTURE_FRAME_MARK }; static const SysprofCaptureFrameType types[] = { SYSPROF_CAPTURE_FRAME_CTRDEF, SYSPROF_CAPTURE_FRAME_MARK };
g_autoptr(SpCaptureCursor) cursor = NULL; g_autoptr(SysprofCaptureCursor) cursor = NULL;
g_autoptr(GTask) task = NULL; g_autoptr(GTask) task = NULL;
SpCaptureCondition *condition; SysprofCaptureCondition *condition;
Discovery *state; Discovery *state;
g_assert (SP_IS_VISUALIZER_LIST (self)); g_assert (SYSPROF_IS_VISUALIZER_LIST (self));
g_assert (reader != NULL); g_assert (reader != NULL);
/* /*
@ -381,9 +381,9 @@ discover_new_rows (SpVisualizerList *self,
* denote capabilities at the beginning of the capture stream. * denote capabilities at the beginning of the capture stream.
*/ */
cursor = sp_capture_cursor_new (reader); cursor = sysprof_capture_cursor_new (reader);
condition = sp_capture_condition_new_where_type_in (G_N_ELEMENTS (types), types); condition = sysprof_capture_condition_new_where_type_in (G_N_ELEMENTS (types), types);
sp_capture_cursor_add_condition (cursor, g_steal_pointer (&condition)); sysprof_capture_cursor_add_condition (cursor, g_steal_pointer (&condition));
state = g_slice_new0 (Discovery); state = g_slice_new0 (Discovery);
state->mark_groups = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); state->mark_groups = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
@ -396,25 +396,25 @@ discover_new_rows (SpVisualizerList *self,
} }
void void
sp_visualizer_list_set_reader (SpVisualizerList *self, sysprof_visualizer_list_set_reader (SysprofVisualizerList *self,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpVisualizerListPrivate *priv = sp_visualizer_list_get_instance_private (self); SysprofVisualizerListPrivate *priv = sysprof_visualizer_list_get_instance_private (self);
g_return_if_fail (SP_IS_VISUALIZER_LIST (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_LIST (self));
if (reader != priv->reader) if (reader != priv->reader)
{ {
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
if (reader != NULL) if (reader != NULL)
{ {
priv->reader = sp_capture_reader_ref (reader); priv->reader = sysprof_capture_reader_ref (reader);
discover_new_rows (self, reader); discover_new_rows (self, reader);
} }
gtk_container_foreach (GTK_CONTAINER (self), gtk_container_foreach (GTK_CONTAINER (self),
(GtkCallback)sp_visualizer_row_set_reader, (GtkCallback)sysprof_visualizer_row_set_reader,
reader); reader);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_READER]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_READER]);
@ -422,34 +422,34 @@ sp_visualizer_list_set_reader (SpVisualizerList *self,
} }
void void
sp_visualizer_list_set_zoom_manager (SpVisualizerList *self, sysprof_visualizer_list_set_zoom_manager (SysprofVisualizerList *self,
SpZoomManager *zoom_manager) SysprofZoomManager *zoom_manager)
{ {
SpVisualizerListPrivate *priv = sp_visualizer_list_get_instance_private (self); SysprofVisualizerListPrivate *priv = sysprof_visualizer_list_get_instance_private (self);
g_return_if_fail (SP_IS_VISUALIZER_LIST (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_LIST (self));
g_return_if_fail (SP_IS_ZOOM_MANAGER (zoom_manager)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (zoom_manager));
if (g_set_object (&priv->zoom_manager, zoom_manager)) if (g_set_object (&priv->zoom_manager, zoom_manager))
{ {
gtk_container_foreach (GTK_CONTAINER (self), gtk_container_foreach (GTK_CONTAINER (self),
(GtkCallback)sp_visualizer_row_set_zoom_manager, (GtkCallback)sysprof_visualizer_row_set_zoom_manager,
zoom_manager); zoom_manager);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM_MANAGER]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM_MANAGER]);
} }
} }
/** /**
* sp_visualizer_list_get_zoom_manager: * sysprof_visualizer_list_get_zoom_manager:
* *
* Returns: (nullable) (transfer): A #SpZoomManager or %NULL. * Returns: (nullable) (transfer): A #SysprofZoomManager or %NULL.
*/ */
SpZoomManager * SysprofZoomManager *
sp_visualizer_list_get_zoom_manager (SpVisualizerList *self) sysprof_visualizer_list_get_zoom_manager (SysprofVisualizerList *self)
{ {
SpVisualizerListPrivate *priv = sp_visualizer_list_get_instance_private (self); SysprofVisualizerListPrivate *priv = sysprof_visualizer_list_get_instance_private (self);
g_return_val_if_fail (SP_IS_VISUALIZER_LIST (self), NULL); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_LIST (self), NULL);
return priv->zoom_manager; return priv->zoom_manager;
} }

View File

@ -1,4 +1,4 @@
/* sp-visualizer-list.h /* sysprof-visualizer-list.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,16 +22,16 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-capture-reader.h" #include "sysprof-capture-reader.h"
#include "sp-zoom-manager.h" #include "sysprof-zoom-manager.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_VISUALIZER_LIST (sp_visualizer_list_get_type()) #define SYSPROF_TYPE_VISUALIZER_LIST (sysprof_visualizer_list_get_type())
G_DECLARE_DERIVABLE_TYPE (SpVisualizerList, sp_visualizer_list, SP, VISUALIZER_LIST, GtkListBox) G_DECLARE_DERIVABLE_TYPE (SysprofVisualizerList, sysprof_visualizer_list, SYSPROF, VISUALIZER_LIST, GtkListBox)
struct _SpVisualizerListClass struct _SysprofVisualizerListClass
{ {
GtkListBoxClass parent_class; GtkListBoxClass parent_class;
@ -45,12 +45,12 @@ struct _SpVisualizerListClass
gpointer _reserved8; gpointer _reserved8;
}; };
GtkWidget *sp_visualizer_list_new (void); GtkWidget *sysprof_visualizer_list_new (void);
void sp_visualizer_list_set_reader (SpVisualizerList *self, void sysprof_visualizer_list_set_reader (SysprofVisualizerList *self,
SpCaptureReader *reader); SysprofCaptureReader *reader);
SpCaptureReader *sp_visualizer_list_get_reader (SpVisualizerList *self); SysprofCaptureReader *sysprof_visualizer_list_get_reader (SysprofVisualizerList *self);
SpZoomManager *sp_visualizer_list_get_zoom_manager (SpVisualizerList *self); SysprofZoomManager *sysprof_visualizer_list_get_zoom_manager (SysprofVisualizerList *self);
void sp_visualizer_list_set_zoom_manager (SpVisualizerList *self, void sysprof_visualizer_list_set_zoom_manager (SysprofVisualizerList *self,
SpZoomManager *zoom_manager); SysprofZoomManager *zoom_manager);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-visualizer-row-private.h /* sysprof-visualizer-row-private.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,10 +20,10 @@
#pragma once #pragma once
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
G_BEGIN_DECLS G_BEGIN_DECLS
gint _sp_visualizer_row_get_graph_width (SpVisualizerRow *self); gint _sysprof_visualizer_row_get_graph_width (SysprofVisualizerRow *self);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-visualizer-row.c /* sysprof-visualizer-row.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -18,21 +18,21 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-visualizer-row" #define G_LOG_DOMAIN "sysprof-visualizer-row"
#include "config.h" #include "config.h"
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
#include "sp-visualizer-row-private.h" #include "sysprof-visualizer-row-private.h"
#define NSEC_PER_SEC G_GINT64_CONSTANT(1000000000) #define NSEC_PER_SEC G_GINT64_CONSTANT(1000000000)
#define DEFAULT_PIXELS_PER_SECOND 20 #define DEFAULT_PIXELS_PER_SECOND 20
typedef struct typedef struct
{ {
SpCaptureReader *reader; SysprofCaptureReader *reader;
SpZoomManager *zoom_manager; SysprofZoomManager *zoom_manager;
} SpVisualizerRowPrivate; } SysprofVisualizerRowPrivate;
enum { enum {
PROP_0, PROP_0,
@ -42,26 +42,26 @@ enum {
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (SpVisualizerRow, sp_visualizer_row, GTK_TYPE_LIST_BOX_ROW) G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (SysprofVisualizerRow, sysprof_visualizer_row, GTK_TYPE_LIST_BOX_ROW)
gint gint
_sp_visualizer_row_get_graph_width (SpVisualizerRow *self) _sysprof_visualizer_row_get_graph_width (SysprofVisualizerRow *self)
{ {
SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); SysprofVisualizerRowPrivate *priv = sysprof_visualizer_row_get_instance_private (self);
gdouble zoom_level = 1.0; gdouble zoom_level = 1.0;
gint64 begin_time; gint64 begin_time;
gint64 end_time; gint64 end_time;
g_assert (SP_IS_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_VISUALIZER_ROW (self));
if (priv->reader == NULL) if (priv->reader == NULL)
return 0; return 0;
if (priv->zoom_manager != NULL) if (priv->zoom_manager != NULL)
zoom_level = sp_zoom_manager_get_zoom (priv->zoom_manager); zoom_level = sysprof_zoom_manager_get_zoom (priv->zoom_manager);
begin_time = sp_capture_reader_get_start_time (priv->reader); begin_time = sysprof_capture_reader_get_start_time (priv->reader);
end_time = sp_capture_reader_get_end_time (priv->reader); end_time = sysprof_capture_reader_get_end_time (priv->reader);
return (end_time - begin_time) return (end_time - begin_time)
/ (gdouble)NSEC_PER_SEC / (gdouble)NSEC_PER_SEC
@ -70,36 +70,36 @@ _sp_visualizer_row_get_graph_width (SpVisualizerRow *self)
} }
static void static void
sp_visualizer_row_get_preferred_width (GtkWidget *widget, sysprof_visualizer_row_get_preferred_width (GtkWidget *widget,
gint *min_width, gint *min_width,
gint *nat_width) gint *nat_width)
{ {
SpVisualizerRow *self = (SpVisualizerRow *)widget; SysprofVisualizerRow *self = (SysprofVisualizerRow *)widget;
gint graph_width; gint graph_width;
gint real_min_width = 0; gint real_min_width = 0;
gint real_nat_width = 0; gint real_nat_width = 0;
g_assert (SP_IS_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_VISUALIZER_ROW (self));
GTK_WIDGET_CLASS (sp_visualizer_row_parent_class)->get_preferred_width (widget, &real_min_width, &real_nat_width); GTK_WIDGET_CLASS (sysprof_visualizer_row_parent_class)->get_preferred_width (widget, &real_min_width, &real_nat_width);
graph_width = _sp_visualizer_row_get_graph_width (self); graph_width = _sysprof_visualizer_row_get_graph_width (self);
*min_width = *nat_width = real_min_width + graph_width; *min_width = *nat_width = real_min_width + graph_width;
} }
static void static void
sp_visualizer_row_get_property (GObject *object, sysprof_visualizer_row_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpVisualizerRow *self = SP_VISUALIZER_ROW (object); SysprofVisualizerRow *self = SYSPROF_VISUALIZER_ROW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_ZOOM_MANAGER: case PROP_ZOOM_MANAGER:
g_value_set_object (value, sp_visualizer_row_get_zoom_manager (self)); g_value_set_object (value, sysprof_visualizer_row_get_zoom_manager (self));
break; break;
default: default:
@ -108,17 +108,17 @@ sp_visualizer_row_get_property (GObject *object,
} }
static void static void
sp_visualizer_row_set_property (GObject *object, sysprof_visualizer_row_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpVisualizerRow *self = SP_VISUALIZER_ROW (object); SysprofVisualizerRow *self = SYSPROF_VISUALIZER_ROW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_ZOOM_MANAGER: case PROP_ZOOM_MANAGER:
sp_visualizer_row_set_zoom_manager (self, g_value_get_object (value)); sysprof_visualizer_row_set_zoom_manager (self, g_value_get_object (value));
break; break;
default: default:
@ -127,87 +127,87 @@ sp_visualizer_row_set_property (GObject *object,
} }
static void static void
sp_visualizer_row_finalize (GObject *object) sysprof_visualizer_row_finalize (GObject *object)
{ {
SpVisualizerRow *self = (SpVisualizerRow *)object; SysprofVisualizerRow *self = (SysprofVisualizerRow *)object;
SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); SysprofVisualizerRowPrivate *priv = sysprof_visualizer_row_get_instance_private (self);
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
g_clear_object (&priv->zoom_manager); g_clear_object (&priv->zoom_manager);
G_OBJECT_CLASS (sp_visualizer_row_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_visualizer_row_parent_class)->finalize (object);
} }
static void static void
sp_visualizer_row_class_init (SpVisualizerRowClass *klass) sysprof_visualizer_row_class_init (SysprofVisualizerRowClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = sp_visualizer_row_finalize; object_class->finalize = sysprof_visualizer_row_finalize;
object_class->get_property = sp_visualizer_row_get_property; object_class->get_property = sysprof_visualizer_row_get_property;
object_class->set_property = sp_visualizer_row_set_property; object_class->set_property = sysprof_visualizer_row_set_property;
widget_class->get_preferred_width = sp_visualizer_row_get_preferred_width; widget_class->get_preferred_width = sysprof_visualizer_row_get_preferred_width;
properties [PROP_ZOOM_MANAGER] = properties [PROP_ZOOM_MANAGER] =
g_param_spec_object ("zoom-manager", g_param_spec_object ("zoom-manager",
"Zoom Manager", "Zoom Manager",
"Zoom Manager", "Zoom Manager",
SP_TYPE_ZOOM_MANAGER, SYSPROF_TYPE_ZOOM_MANAGER,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
} }
static void static void
sp_visualizer_row_init (SpVisualizerRow *self) sysprof_visualizer_row_init (SysprofVisualizerRow *self)
{ {
gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (self), FALSE); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (self), FALSE);
gtk_list_box_row_set_selectable (GTK_LIST_BOX_ROW (self), FALSE); gtk_list_box_row_set_selectable (GTK_LIST_BOX_ROW (self), FALSE);
} }
static void static void
sp_visualizer_row_zoom_manager_notify_zoom (SpVisualizerRow *self, sysprof_visualizer_row_zoom_manager_notify_zoom (SysprofVisualizerRow *self,
GParamSpec *pspec, GParamSpec *pspec,
SpZoomManager *zoom_manager) SysprofZoomManager *zoom_manager)
{ {
g_assert (SP_IS_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_VISUALIZER_ROW (self));
g_assert (SP_IS_ZOOM_MANAGER (zoom_manager)); g_assert (SYSPROF_IS_ZOOM_MANAGER (zoom_manager));
gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_resize (GTK_WIDGET (self));
} }
/** /**
* sp_visualizer_row_get_zoom_manager: * sysprof_visualizer_row_get_zoom_manager:
* *
* Returns: (transfer none) (nullable): A #SpZoomManager or %NULL. * Returns: (transfer none) (nullable): A #SysprofZoomManager or %NULL.
*/ */
SpZoomManager * SysprofZoomManager *
sp_visualizer_row_get_zoom_manager (SpVisualizerRow *self) sysprof_visualizer_row_get_zoom_manager (SysprofVisualizerRow *self)
{ {
SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); SysprofVisualizerRowPrivate *priv = sysprof_visualizer_row_get_instance_private (self);
g_return_val_if_fail (SP_IS_VISUALIZER_ROW (self), NULL); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_ROW (self), NULL);
return priv->zoom_manager; return priv->zoom_manager;
} }
void void
sp_visualizer_row_set_zoom_manager (SpVisualizerRow *self, sysprof_visualizer_row_set_zoom_manager (SysprofVisualizerRow *self,
SpZoomManager *zoom_manager) SysprofZoomManager *zoom_manager)
{ {
SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); SysprofVisualizerRowPrivate *priv = sysprof_visualizer_row_get_instance_private (self);
g_return_if_fail (SP_IS_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_ROW (self));
g_return_if_fail (!zoom_manager || SP_IS_ZOOM_MANAGER (zoom_manager)); g_return_if_fail (!zoom_manager || SYSPROF_IS_ZOOM_MANAGER (zoom_manager));
if (priv->zoom_manager != zoom_manager) if (priv->zoom_manager != zoom_manager)
{ {
if (priv->zoom_manager != NULL) if (priv->zoom_manager != NULL)
{ {
g_signal_handlers_disconnect_by_func (priv->zoom_manager, g_signal_handlers_disconnect_by_func (priv->zoom_manager,
G_CALLBACK (sp_visualizer_row_zoom_manager_notify_zoom), G_CALLBACK (sysprof_visualizer_row_zoom_manager_notify_zoom),
self); self);
g_clear_object (&priv->zoom_manager); g_clear_object (&priv->zoom_manager);
} }
@ -217,7 +217,7 @@ sp_visualizer_row_set_zoom_manager (SpVisualizerRow *self,
priv->zoom_manager = g_object_ref (zoom_manager); priv->zoom_manager = g_object_ref (zoom_manager);
g_signal_connect_object (priv->zoom_manager, g_signal_connect_object (priv->zoom_manager,
"notify::zoom", "notify::zoom",
G_CALLBACK (sp_visualizer_row_zoom_manager_notify_zoom), G_CALLBACK (sysprof_visualizer_row_zoom_manager_notify_zoom),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
} }
@ -228,22 +228,22 @@ sp_visualizer_row_set_zoom_manager (SpVisualizerRow *self,
} }
void void
sp_visualizer_row_set_reader (SpVisualizerRow *self, sysprof_visualizer_row_set_reader (SysprofVisualizerRow *self,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpVisualizerRowPrivate *priv = sp_visualizer_row_get_instance_private (self); SysprofVisualizerRowPrivate *priv = sysprof_visualizer_row_get_instance_private (self);
g_return_if_fail (SP_IS_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_ROW (self));
if (priv->reader != reader) if (priv->reader != reader)
{ {
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
if (reader != NULL) if (reader != NULL)
priv->reader = sp_capture_reader_ref (reader); priv->reader = sysprof_capture_reader_ref (reader);
if (SP_VISUALIZER_ROW_GET_CLASS (self)->set_reader) if (SYSPROF_VISUALIZER_ROW_GET_CLASS (self)->set_reader)
SP_VISUALIZER_ROW_GET_CLASS (self)->set_reader (self, reader); SYSPROF_VISUALIZER_ROW_GET_CLASS (self)->set_reader (self, reader);
gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_resize (GTK_WIDGET (self));
} }
@ -264,14 +264,14 @@ subtract_border (GtkAllocation *alloc,
} }
static void static void
adjust_alloc_for_borders (SpVisualizerRow *self, adjust_alloc_for_borders (SysprofVisualizerRow *self,
GtkAllocation *alloc) GtkAllocation *alloc)
{ {
GtkStyleContext *style_context; GtkStyleContext *style_context;
GtkBorder border; GtkBorder border;
GtkStateFlags state; GtkStateFlags state;
g_assert (SP_IS_VISUALIZER_ROW (self)); g_assert (SYSPROF_IS_VISUALIZER_ROW (self));
g_assert (alloc != NULL); g_assert (alloc != NULL);
state = gtk_widget_get_state_flags (GTK_WIDGET (self)); state = gtk_widget_get_state_flags (GTK_WIDGET (self));
@ -282,16 +282,16 @@ adjust_alloc_for_borders (SpVisualizerRow *self,
} }
void void
sp_visualizer_row_translate_points (SpVisualizerRow *self, sysprof_visualizer_row_translate_points (SysprofVisualizerRow *self,
const SpVisualizerRowRelativePoint *in_points, const SysprofVisualizerRowRelativePoint *in_points,
guint n_in_points, guint n_in_points,
SpVisualizerRowAbsolutePoint *out_points, SysprofVisualizerRowAbsolutePoint *out_points,
guint n_out_points) guint n_out_points)
{ {
GtkAllocation alloc; GtkAllocation alloc;
gint graph_width; gint graph_width;
g_return_if_fail (SP_IS_VISUALIZER_ROW (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_ROW (self));
g_return_if_fail (in_points != NULL); g_return_if_fail (in_points != NULL);
g_return_if_fail (out_points != NULL); g_return_if_fail (out_points != NULL);
g_return_if_fail (n_in_points == n_out_points); g_return_if_fail (n_in_points == n_out_points);
@ -299,7 +299,7 @@ sp_visualizer_row_translate_points (SpVisualizerRow *self,
gtk_widget_get_allocation (GTK_WIDGET (self), &alloc); gtk_widget_get_allocation (GTK_WIDGET (self), &alloc);
adjust_alloc_for_borders (self, &alloc); adjust_alloc_for_borders (self, &alloc);
graph_width = _sp_visualizer_row_get_graph_width (self); graph_width = _sysprof_visualizer_row_get_graph_width (self);
for (guint i = 0; i < n_in_points; i++) for (guint i = 0; i < n_in_points; i++)
{ {

View File

@ -1,4 +1,4 @@
/* sp-visualizer-row.h /* sysprof-visualizer-row.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,54 +22,54 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "sp-capture-reader.h" #include "sysprof-capture-reader.h"
#include "sp-zoom-manager.h" #include "sysprof-zoom-manager.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_VISUALIZER_ROW (sp_visualizer_row_get_type()) #define SYSPROF_TYPE_VISUALIZER_ROW (sysprof_visualizer_row_get_type())
G_DECLARE_DERIVABLE_TYPE (SpVisualizerRow, sp_visualizer_row, SP, VISUALIZER_ROW, GtkListBoxRow) G_DECLARE_DERIVABLE_TYPE (SysprofVisualizerRow, sysprof_visualizer_row, SYSPROF, VISUALIZER_ROW, GtkListBoxRow)
typedef struct typedef struct
{ {
gdouble x; gdouble x;
gdouble y; gdouble y;
} SpVisualizerRowRelativePoint; } SysprofVisualizerRowRelativePoint;
typedef struct typedef struct
{ {
gint x; gint x;
gint y; gint y;
} SpVisualizerRowAbsolutePoint; } SysprofVisualizerRowAbsolutePoint;
struct _SpVisualizerRowClass struct _SysprofVisualizerRowClass
{ {
GtkListBoxRowClass parent_class; GtkListBoxRowClass parent_class;
/** /**
* SpVisualizerRow::set_reader: * SysprofVisualizerRow::set_reader:
* *
* Sets the reader that the row should use to extract counters. * Sets the reader that the row should use to extract counters.
* This reader is private to the row and should be freed when * This reader is private to the row and should be freed when
* no longer in use with sp_capture_reader_unref(). * no longer in use with sysprof_capture_reader_unref().
*/ */
void (*set_reader) (SpVisualizerRow *self, void (*set_reader) (SysprofVisualizerRow *self,
SpCaptureReader *reader); SysprofCaptureReader *reader);
/*< private >*/ /*< private >*/
gpointer _reserved[16]; gpointer _reserved[16];
}; };
void sp_visualizer_row_set_reader (SpVisualizerRow *self, void sysprof_visualizer_row_set_reader (SysprofVisualizerRow *self,
SpCaptureReader *reader); SysprofCaptureReader *reader);
SpZoomManager *sp_visualizer_row_get_zoom_manager (SpVisualizerRow *self); SysprofZoomManager *sysprof_visualizer_row_get_zoom_manager (SysprofVisualizerRow *self);
void sp_visualizer_row_set_zoom_manager (SpVisualizerRow *self, void sysprof_visualizer_row_set_zoom_manager (SysprofVisualizerRow *self,
SpZoomManager *zoom_manager); SysprofZoomManager *zoom_manager);
void sp_visualizer_row_translate_points (SpVisualizerRow *self, void sysprof_visualizer_row_translate_points (SysprofVisualizerRow *self,
const SpVisualizerRowRelativePoint *in_points, const SysprofVisualizerRowRelativePoint *in_points,
guint n_in_points, guint n_in_points,
SpVisualizerRowAbsolutePoint *out_points, SysprofVisualizerRowAbsolutePoint *out_points,
guint n_out_points); guint n_out_points);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-visualizer-ticks.c /* sysprof-visualizer-ticks.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,7 +22,7 @@
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include "sp-visualizer-ticks.h" #include "sysprof-visualizer-ticks.h"
#define NSEC_PER_SEC G_GINT64_CONSTANT(1000000000) #define NSEC_PER_SEC G_GINT64_CONSTANT(1000000000)
#define NSEC_PER_HOUR (NSEC_PER_SEC * 60 * 60) #define NSEC_PER_HOUR (NSEC_PER_SEC * 60 * 60)
@ -31,7 +31,7 @@
#define MIN_TICK_DISTANCE 20 #define MIN_TICK_DISTANCE 20
#define LABEL_HEIGHT_PX 8 #define LABEL_HEIGHT_PX 8
struct _SpVisualizerTicks struct _SysprofVisualizerTicks
{ {
GtkDrawingArea parent_instance; GtkDrawingArea parent_instance;
@ -69,7 +69,7 @@ struct {
{ 1, 3, NSEC_PER_SEC / 1000 }, { 1, 3, NSEC_PER_SEC / 1000 },
}; };
G_DEFINE_TYPE (SpVisualizerTicks, sp_visualizer_ticks, GTK_TYPE_DRAWING_AREA) G_DEFINE_TYPE (SysprofVisualizerTicks, sysprof_visualizer_ticks, GTK_TYPE_DRAWING_AREA)
static void static void
update_label_text (PangoLayout *layout, update_label_text (PangoLayout *layout,
@ -126,7 +126,7 @@ update_label_text (PangoLayout *layout,
} }
static inline gdouble static inline gdouble
get_x_for_time (SpVisualizerTicks *self, get_x_for_time (SysprofVisualizerTicks *self,
const GtkAllocation *alloc, const GtkAllocation *alloc,
gint64 t) gint64 t)
{ {
@ -137,7 +137,7 @@ get_x_for_time (SpVisualizerTicks *self,
#if 0 #if 0
static inline gint64 static inline gint64
get_time_at_x (SpVisualizerTicks *self, get_time_at_x (SysprofVisualizerTicks *self,
const GtkAllocation *alloc, const GtkAllocation *alloc,
gdouble x) gdouble x)
{ {
@ -148,7 +148,7 @@ get_time_at_x (SpVisualizerTicks *self,
#endif #endif
static gboolean static gboolean
draw_ticks (SpVisualizerTicks *self, draw_ticks (SysprofVisualizerTicks *self,
cairo_t *cr, cairo_t *cr,
GtkAllocation *area, GtkAllocation *area,
gint ticks, gint ticks,
@ -159,7 +159,7 @@ draw_ticks (SpVisualizerTicks *self,
gint64 x_offset; gint64 x_offset;
gint count = 0; gint count = 0;
g_assert (SP_IS_VISUALIZER_TICKS (self)); g_assert (SYSPROF_IS_VISUALIZER_TICKS (self));
g_assert (cr != NULL); g_assert (cr != NULL);
g_assert (area != NULL); g_assert (area != NULL);
g_assert (ticks >= 0); g_assert (ticks >= 0);
@ -234,17 +234,17 @@ draw_ticks (SpVisualizerTicks *self,
} }
static gboolean static gboolean
sp_visualizer_ticks_draw (GtkWidget *widget, sysprof_visualizer_ticks_draw (GtkWidget *widget,
cairo_t *cr) cairo_t *cr)
{ {
SpVisualizerTicks *self = SP_VISUALIZER_TICKS (widget); SysprofVisualizerTicks *self = SYSPROF_VISUALIZER_TICKS (widget);
GtkStyleContext *style; GtkStyleContext *style;
GtkAllocation alloc; GtkAllocation alloc;
GtkStateFlags state; GtkStateFlags state;
gint64 timespan; gint64 timespan;
GdkRGBA color; GdkRGBA color;
g_assert (SP_IS_VISUALIZER_TICKS (self)); g_assert (SYSPROF_IS_VISUALIZER_TICKS (self));
g_assert (cr != NULL); g_assert (cr != NULL);
if (0 == (timespan = self->end_time - self->begin_time)) if (0 == (timespan = self->end_time - self->begin_time))
@ -289,28 +289,28 @@ sp_visualizer_ticks_draw (GtkWidget *widget,
} }
static void static void
sp_visualizer_ticks_get_preferred_height (GtkWidget *widget, sysprof_visualizer_ticks_get_preferred_height (GtkWidget *widget,
gint *min_height, gint *min_height,
gint *nat_height) gint *nat_height)
{ {
g_assert (SP_IS_VISUALIZER_TICKS (widget)); g_assert (SYSPROF_IS_VISUALIZER_TICKS (widget));
*min_height = *nat_height = tick_sizing[0].height + LABEL_HEIGHT_PX; *min_height = *nat_height = tick_sizing[0].height + LABEL_HEIGHT_PX;
} }
static void static void
sp_visualizer_ticks_class_init (SpVisualizerTicksClass *klass) sysprof_visualizer_ticks_class_init (SysprofVisualizerTicksClass *klass)
{ {
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
widget_class->draw = sp_visualizer_ticks_draw; widget_class->draw = sysprof_visualizer_ticks_draw;
widget_class->get_preferred_height = sp_visualizer_ticks_get_preferred_height; widget_class->get_preferred_height = sysprof_visualizer_ticks_get_preferred_height;
gtk_widget_class_set_css_name (widget_class, "ticks"); gtk_widget_class_set_css_name (widget_class, "ticks");
} }
static void static void
sp_visualizer_ticks_init (SpVisualizerTicks *self) sysprof_visualizer_ticks_init (SysprofVisualizerTicks *self)
{ {
self->end_time = G_GINT64_CONSTANT (1000000000) * 60; self->end_time = G_GINT64_CONSTANT (1000000000) * 60;
@ -318,17 +318,17 @@ sp_visualizer_ticks_init (SpVisualizerTicks *self)
} }
GtkWidget * GtkWidget *
sp_visualizer_ticks_new (void) sysprof_visualizer_ticks_new (void)
{ {
return g_object_new (SP_TYPE_VISUALIZER_TICKS, NULL); return g_object_new (SYSPROF_TYPE_VISUALIZER_TICKS, NULL);
} }
void void
sp_visualizer_ticks_get_time_range (SpVisualizerTicks *self, sysprof_visualizer_ticks_get_time_range (SysprofVisualizerTicks *self,
gint64 *begin_time, gint64 *begin_time,
gint64 *end_time) gint64 *end_time)
{ {
g_return_if_fail (SP_IS_VISUALIZER_TICKS (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_TICKS (self));
g_return_if_fail (begin_time != NULL || end_time != NULL); g_return_if_fail (begin_time != NULL || end_time != NULL);
if (begin_time != NULL) if (begin_time != NULL)
@ -339,11 +339,11 @@ sp_visualizer_ticks_get_time_range (SpVisualizerTicks *self,
} }
void void
sp_visualizer_ticks_set_time_range (SpVisualizerTicks *self, sysprof_visualizer_ticks_set_time_range (SysprofVisualizerTicks *self,
gint64 begin_time, gint64 begin_time,
gint64 end_time) gint64 end_time)
{ {
g_return_if_fail (SP_IS_VISUALIZER_TICKS (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_TICKS (self));
if (begin_time > end_time) if (begin_time > end_time)
{ {
@ -359,9 +359,9 @@ sp_visualizer_ticks_set_time_range (SpVisualizerTicks *self,
} }
gint64 gint64
sp_visualizer_ticks_get_epoch (SpVisualizerTicks *self) sysprof_visualizer_ticks_get_epoch (SysprofVisualizerTicks *self)
{ {
g_return_val_if_fail (SP_IS_VISUALIZER_TICKS (self), 0); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_TICKS (self), 0);
return self->epoch; return self->epoch;
} }
@ -370,7 +370,7 @@ sp_visualizer_ticks_get_epoch (SpVisualizerTicks *self)
* Sets the epoch for the visualizer ticks. * Sets the epoch for the visualizer ticks.
* *
* The epoch is the "real" starting time of the capture, where as the * The epoch is the "real" starting time of the capture, where as the
* sp_visualizer_ticks_set_time_range() function sets the visible range * sysprof_visualizer_ticks_set_time_range() function sets the visible range
* of the capture. * of the capture.
* *
* This is used to calculate the offset of the beginning of the capture * This is used to calculate the offset of the beginning of the capture
@ -379,10 +379,10 @@ sp_visualizer_ticks_get_epoch (SpVisualizerTicks *self)
* This function should only need to be called when the reader is changed. * This function should only need to be called when the reader is changed.
*/ */
void void
sp_visualizer_ticks_set_epoch (SpVisualizerTicks *self, sysprof_visualizer_ticks_set_epoch (SysprofVisualizerTicks *self,
gint64 epoch) gint64 epoch)
{ {
g_return_if_fail (SP_IS_VISUALIZER_TICKS (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_TICKS (self));
if (self->epoch != epoch) if (self->epoch != epoch)
{ {

View File

@ -1,4 +1,4 @@
/* sp-visualizer-ticks.h /* sysprof-visualizer-ticks.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -24,18 +24,18 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_VISUALIZER_TICKS (sp_visualizer_ticks_get_type()) #define SYSPROF_TYPE_VISUALIZER_TICKS (sysprof_visualizer_ticks_get_type())
G_DECLARE_FINAL_TYPE (SpVisualizerTicks, sp_visualizer_ticks, SP, VISUALIZER_TICKS, GtkDrawingArea) G_DECLARE_FINAL_TYPE (SysprofVisualizerTicks, sysprof_visualizer_ticks, SYSPROF, VISUALIZER_TICKS, GtkDrawingArea)
GtkWidget *sp_visualizer_ticks_new (void); GtkWidget *sysprof_visualizer_ticks_new (void);
void sp_visualizer_ticks_set_epoch (SpVisualizerTicks *self, void sysprof_visualizer_ticks_set_epoch (SysprofVisualizerTicks *self,
gint64 epoch); gint64 epoch);
gint64 sp_visualizer_ticks_get_epoch (SpVisualizerTicks *self); gint64 sysprof_visualizer_ticks_get_epoch (SysprofVisualizerTicks *self);
void sp_visualizer_ticks_get_time_range (SpVisualizerTicks *self, void sysprof_visualizer_ticks_get_time_range (SysprofVisualizerTicks *self,
gint64 *begin_time, gint64 *begin_time,
gint64 *end_time); gint64 *end_time);
void sp_visualizer_ticks_set_time_range (SpVisualizerTicks *self, void sysprof_visualizer_ticks_set_time_range (SysprofVisualizerTicks *self,
gint64 begin_time, gint64 begin_time,
gint64 end_time); gint64 end_time);

View File

@ -1,4 +1,4 @@
/* sp-visualizer-view.c /* sysprof-visualizer-view.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,42 +18,42 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-visualizer-view" #define G_LOG_DOMAIN "sysprof-visualizer-view"
#include "config.h" #include "config.h"
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include "sp-theme-manager.h" #include "sysprof-theme-manager.h"
#include "sp-visualizer-list.h" #include "sysprof-visualizer-list.h"
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
#include "sp-visualizer-row-private.h" #include "sysprof-visualizer-row-private.h"
#include "sp-selection.h" #include "sysprof-selection.h"
#include "sp-visualizer-ticks.h" #include "sysprof-visualizer-ticks.h"
#include "sp-visualizer-view.h" #include "sysprof-visualizer-view.h"
#define NSEC_PER_SEC G_GINT64_CONSTANT(1000000000) #define NSEC_PER_SEC G_GINT64_CONSTANT(1000000000)
#define DEFAULT_PIXELS_PER_SECOND 20 #define DEFAULT_PIXELS_PER_SECOND 20
typedef struct typedef struct
{ {
SpCaptureReader *reader; SysprofCaptureReader *reader;
SpZoomManager *zoom_manager; SysprofZoomManager *zoom_manager;
SpSelection *selection; SysprofSelection *selection;
SpVisualizerList *list; SysprofVisualizerList *list;
GtkScrolledWindow *scroller; GtkScrolledWindow *scroller;
SpVisualizerTicks *ticks; SysprofVisualizerTicks *ticks;
gint64 drag_begin_at; gint64 drag_begin_at;
gint64 drag_selection_at; gint64 drag_selection_at;
guint button_pressed : 1; guint button_pressed : 1;
} SpVisualizerViewPrivate; } SysprofVisualizerViewPrivate;
typedef struct typedef struct
{ {
SpVisualizerView *self; SysprofVisualizerView *self;
GtkStyleContext *style_context; GtkStyleContext *style_context;
cairo_t *cr; cairo_t *cr;
GtkAllocation alloc; GtkAllocation alloc;
@ -74,8 +74,8 @@ enum {
static void buildable_iface_init (GtkBuildableIface *iface); static void buildable_iface_init (GtkBuildableIface *iface);
G_DEFINE_TYPE_EXTENDED (SpVisualizerView, sp_visualizer_view, GTK_TYPE_BIN, 0, G_DEFINE_TYPE_EXTENDED (SysprofVisualizerView, sysprof_visualizer_view, GTK_TYPE_BIN, 0,
G_ADD_PRIVATE (SpVisualizerView) G_ADD_PRIVATE (SysprofVisualizerView)
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, buildable_iface_init)) G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, buildable_iface_init))
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
@ -88,23 +88,23 @@ find_row1 (GtkWidget *widget,
{ {
GtkWidget **row1 = data; GtkWidget **row1 = data;
if (*row1 == NULL && SP_IS_VISUALIZER_ROW (widget)) if (*row1 == NULL && SYSPROF_IS_VISUALIZER_ROW (widget))
*row1 = widget; *row1 = widget;
} }
static gint64 static gint64
get_time_from_coordinates (SpVisualizerView *self, get_time_from_coordinates (SysprofVisualizerView *self,
gint x, gint x,
gint y) gint y)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
SpVisualizerRow *row1 = NULL; SysprofVisualizerRow *row1 = NULL;
GtkAllocation alloc; GtkAllocation alloc;
gint64 begin_time; gint64 begin_time;
gint64 end_time; gint64 end_time;
gint graph_width; gint graph_width;
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
if (priv->reader == NULL) if (priv->reader == NULL)
return 0; return 0;
@ -119,23 +119,23 @@ get_time_from_coordinates (SpVisualizerView *self,
* (ignoring spacing caused by the widget being wider than the data points. * (ignoring spacing caused by the widget being wider than the data points.
*/ */
gtk_container_foreach (GTK_CONTAINER (priv->list), find_row1, &row1); gtk_container_foreach (GTK_CONTAINER (priv->list), find_row1, &row1);
if (!SP_IS_VISUALIZER_ROW (row1)) if (!SYSPROF_IS_VISUALIZER_ROW (row1))
return 0; return 0;
begin_time = sp_capture_reader_get_start_time (priv->reader); begin_time = sysprof_capture_reader_get_start_time (priv->reader);
end_time = sp_capture_reader_get_end_time (priv->reader); end_time = sysprof_capture_reader_get_end_time (priv->reader);
graph_width = _sp_visualizer_row_get_graph_width (row1); graph_width = _sysprof_visualizer_row_get_graph_width (row1);
return begin_time + ((end_time - begin_time) * (x / (gdouble)graph_width)); return begin_time + ((end_time - begin_time) * (x / (gdouble)graph_width));
} }
static gint static gint
get_x_for_time_at (SpVisualizerView *self, get_x_for_time_at (SysprofVisualizerView *self,
const GtkAllocation *alloc, const GtkAllocation *alloc,
gint64 time_at) gint64 time_at)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
SpVisualizerRow *row1 = NULL; SysprofVisualizerRow *row1 = NULL;
GtkAdjustment *hadjustment; GtkAdjustment *hadjustment;
gdouble nsec_per_pixel; gdouble nsec_per_pixel;
gdouble value; gdouble value;
@ -143,7 +143,7 @@ get_x_for_time_at (SpVisualizerView *self,
gint64 end_time; gint64 end_time;
gint graph_width; gint graph_width;
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (alloc != NULL); g_assert (alloc != NULL);
/* /*
@ -151,16 +151,16 @@ get_x_for_time_at (SpVisualizerView *self,
* (ignoring spacing caused by the widget being wider than the data points. * (ignoring spacing caused by the widget being wider than the data points.
*/ */
gtk_container_foreach (GTK_CONTAINER (priv->list), find_row1, &row1); gtk_container_foreach (GTK_CONTAINER (priv->list), find_row1, &row1);
if (!SP_IS_VISUALIZER_ROW (row1)) if (!SYSPROF_IS_VISUALIZER_ROW (row1))
return 0; return 0;
hadjustment = gtk_scrolled_window_get_hadjustment (priv->scroller); hadjustment = gtk_scrolled_window_get_hadjustment (priv->scroller);
value = gtk_adjustment_get_value (hadjustment); value = gtk_adjustment_get_value (hadjustment);
begin_time = sp_capture_reader_get_start_time (priv->reader); begin_time = sysprof_capture_reader_get_start_time (priv->reader);
end_time = sp_capture_reader_get_end_time (priv->reader); end_time = sysprof_capture_reader_get_end_time (priv->reader);
graph_width = _sp_visualizer_row_get_graph_width (row1); graph_width = _sysprof_visualizer_row_get_graph_width (row1);
nsec_per_pixel = (end_time - begin_time) / (gdouble)graph_width; nsec_per_pixel = (end_time - begin_time) / (gdouble)graph_width;
begin_time += value * nsec_per_pixel; begin_time += value * nsec_per_pixel;
@ -168,42 +168,42 @@ get_x_for_time_at (SpVisualizerView *self,
} }
static void static void
sp_visualizer_view_row_added (SpVisualizerView *self, sysprof_visualizer_view_row_added (SysprofVisualizerView *self,
GtkWidget *widget, GtkWidget *widget,
SpVisualizerList *list) SysprofVisualizerList *list)
{ {
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (GTK_IS_WIDGET (widget)); g_assert (GTK_IS_WIDGET (widget));
g_assert (SP_IS_VISUALIZER_LIST (list)); g_assert (SYSPROF_IS_VISUALIZER_LIST (list));
if (SP_IS_VISUALIZER_ROW (widget)) if (SYSPROF_IS_VISUALIZER_ROW (widget))
g_signal_emit (self, signals [VISUALIZER_ADDED], 0, widget); g_signal_emit (self, signals [VISUALIZER_ADDED], 0, widget);
} }
static void static void
sp_visualizer_view_row_removed (SpVisualizerView *self, sysprof_visualizer_view_row_removed (SysprofVisualizerView *self,
GtkWidget *widget, GtkWidget *widget,
SpVisualizerList *list) SysprofVisualizerList *list)
{ {
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (GTK_IS_WIDGET (widget)); g_assert (GTK_IS_WIDGET (widget));
g_assert (SP_IS_VISUALIZER_LIST (list)); g_assert (SYSPROF_IS_VISUALIZER_LIST (list));
if (SP_IS_VISUALIZER_ROW (widget)) if (SYSPROF_IS_VISUALIZER_ROW (widget))
g_signal_emit (self, signals [VISUALIZER_REMOVED], 0, widget); g_signal_emit (self, signals [VISUALIZER_REMOVED], 0, widget);
} }
static void static void
sp_visualizer_view_update_ticks (SpVisualizerView *self) sysprof_visualizer_view_update_ticks (SysprofVisualizerView *self)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
GtkAdjustment *hadjustment; GtkAdjustment *hadjustment;
GtkAllocation alloc; GtkAllocation alloc;
gdouble value; gdouble value;
gint64 begin_time; gint64 begin_time;
gint64 end_time; gint64 end_time;
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
hadjustment = gtk_scrolled_window_get_hadjustment (priv->scroller); hadjustment = gtk_scrolled_window_get_hadjustment (priv->scroller);
value = gtk_adjustment_get_value (hadjustment); value = gtk_adjustment_get_value (hadjustment);
@ -213,35 +213,35 @@ sp_visualizer_view_update_ticks (SpVisualizerView *self)
begin_time = get_time_from_coordinates (self, alloc.x + value, alloc.y); begin_time = get_time_from_coordinates (self, alloc.x + value, alloc.y);
end_time = get_time_from_coordinates (self, alloc.x + value + alloc.width, alloc.y); end_time = get_time_from_coordinates (self, alloc.x + value + alloc.width, alloc.y);
sp_visualizer_ticks_set_time_range (priv->ticks, begin_time, end_time); sysprof_visualizer_ticks_set_time_range (priv->ticks, begin_time, end_time);
} }
static void static void
sp_visualizer_view_hadjustment_value_changed (SpVisualizerView *self, sysprof_visualizer_view_hadjustment_value_changed (SysprofVisualizerView *self,
GtkAdjustment *adjustment) GtkAdjustment *adjustment)
{ {
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (GTK_IS_ADJUSTMENT (adjustment)); g_assert (GTK_IS_ADJUSTMENT (adjustment));
sp_visualizer_view_update_ticks (self); sysprof_visualizer_view_update_ticks (self);
} }
static void static void
sp_visualizer_view_size_allocate (GtkWidget *widget, sysprof_visualizer_view_size_allocate (GtkWidget *widget,
GtkAllocation *allocation) GtkAllocation *allocation)
{ {
SpVisualizerView *self = (SpVisualizerView *)widget; SysprofVisualizerView *self = (SysprofVisualizerView *)widget;
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (allocation != NULL); g_assert (allocation != NULL);
GTK_WIDGET_CLASS (sp_visualizer_view_parent_class)->size_allocate (widget, allocation); GTK_WIDGET_CLASS (sysprof_visualizer_view_parent_class)->size_allocate (widget, allocation);
sp_visualizer_view_update_ticks (self); sysprof_visualizer_view_update_ticks (self);
} }
static void static void
draw_selection_cb (SpSelection *selection, draw_selection_cb (SysprofSelection *selection,
gint64 range_begin, gint64 range_begin,
gint64 range_end, gint64 range_end,
gpointer user_data) gpointer user_data)
@ -249,10 +249,10 @@ draw_selection_cb (SpSelection *selection,
SelectionDraw *draw = user_data; SelectionDraw *draw = user_data;
GdkRectangle area; GdkRectangle area;
g_assert (SP_IS_SELECTION (selection)); g_assert (SYSPROF_IS_SELECTION (selection));
g_assert (draw != NULL); g_assert (draw != NULL);
g_assert (draw->cr != NULL); g_assert (draw->cr != NULL);
g_assert (SP_IS_VISUALIZER_VIEW (draw->self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (draw->self));
area.x = get_x_for_time_at (draw->self, &draw->alloc, range_begin); area.x = get_x_for_time_at (draw->self, &draw->alloc, range_begin);
area.width = get_x_for_time_at (draw->self, &draw->alloc, range_end) - area.x; area.width = get_x_for_time_at (draw->self, &draw->alloc, range_end) - area.x;
@ -269,11 +269,11 @@ draw_selection_cb (SpSelection *selection,
} }
static gboolean static gboolean
sp_visualizer_view_draw (GtkWidget *widget, sysprof_visualizer_view_draw (GtkWidget *widget,
cairo_t *cr) cairo_t *cr)
{ {
SpVisualizerView *self = (SpVisualizerView *)widget; SysprofVisualizerView *self = (SysprofVisualizerView *)widget;
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
SelectionDraw draw = { 0 }; SelectionDraw draw = { 0 };
gboolean ret; gboolean ret;
@ -286,12 +286,12 @@ sp_visualizer_view_draw (GtkWidget *widget,
gtk_widget_get_allocation (widget, &draw.alloc); gtk_widget_get_allocation (widget, &draw.alloc);
ret = GTK_WIDGET_CLASS (sp_visualizer_view_parent_class)->draw (widget, cr); ret = GTK_WIDGET_CLASS (sysprof_visualizer_view_parent_class)->draw (widget, cr);
if (sp_selection_get_has_selection (priv->selection) || priv->button_pressed) if (sysprof_selection_get_has_selection (priv->selection) || priv->button_pressed)
{ {
gtk_style_context_add_class (draw.style_context, "selection"); gtk_style_context_add_class (draw.style_context, "selection");
sp_selection_foreach (priv->selection, draw_selection_cb, &draw); sysprof_selection_foreach (priv->selection, draw_selection_cb, &draw);
if (priv->button_pressed) if (priv->button_pressed)
draw_selection_cb (priv->selection, priv->drag_begin_at, priv->drag_selection_at, &draw); draw_selection_cb (priv->selection, priv->drag_begin_at, priv->drag_selection_at, &draw);
gtk_style_context_remove_class (draw.style_context, "selection"); gtk_style_context_remove_class (draw.style_context, "selection");
@ -301,31 +301,31 @@ sp_visualizer_view_draw (GtkWidget *widget,
} }
static gboolean static gboolean
sp_visualizer_view_list_button_press_event (SpVisualizerView *self, sysprof_visualizer_view_list_button_press_event (SysprofVisualizerView *self,
GdkEventButton *ev, GdkEventButton *ev,
SpVisualizerList *list) SysprofVisualizerList *list)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (ev != NULL); g_assert (ev != NULL);
g_assert (SP_IS_VISUALIZER_LIST (list)); g_assert (SYSPROF_IS_VISUALIZER_LIST (list));
if (priv->reader == NULL) if (priv->reader == NULL)
return GDK_EVENT_PROPAGATE; return GDK_EVENT_PROPAGATE;
if (ev->button != GDK_BUTTON_PRIMARY) if (ev->button != GDK_BUTTON_PRIMARY)
{ {
if (sp_selection_get_has_selection (priv->selection)) if (sysprof_selection_get_has_selection (priv->selection))
{ {
sp_selection_unselect_all (priv->selection); sysprof_selection_unselect_all (priv->selection);
return GDK_EVENT_STOP; return GDK_EVENT_STOP;
} }
return GDK_EVENT_PROPAGATE; return GDK_EVENT_PROPAGATE;
} }
if ((ev->state & GDK_SHIFT_MASK) == 0) if ((ev->state & GDK_SHIFT_MASK) == 0)
sp_selection_unselect_all (priv->selection); sysprof_selection_unselect_all (priv->selection);
priv->button_pressed = TRUE; priv->button_pressed = TRUE;
@ -338,15 +338,15 @@ sp_visualizer_view_list_button_press_event (SpVisualizerView *self,
} }
static gboolean static gboolean
sp_visualizer_view_list_button_release_event (SpVisualizerView *self, sysprof_visualizer_view_list_button_release_event (SysprofVisualizerView *self,
GdkEventButton *ev, GdkEventButton *ev,
SpVisualizerList *list) SysprofVisualizerList *list)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (ev != NULL); g_assert (ev != NULL);
g_assert (SP_IS_VISUALIZER_LIST (list)); g_assert (SYSPROF_IS_VISUALIZER_LIST (list));
if (!priv->button_pressed || ev->button != GDK_BUTTON_PRIMARY) if (!priv->button_pressed || ev->button != GDK_BUTTON_PRIMARY)
return GDK_EVENT_PROPAGATE; return GDK_EVENT_PROPAGATE;
@ -355,7 +355,7 @@ sp_visualizer_view_list_button_release_event (SpVisualizerView *self,
if (priv->drag_begin_at != priv->drag_selection_at) if (priv->drag_begin_at != priv->drag_selection_at)
{ {
sp_selection_select_range (priv->selection, sysprof_selection_select_range (priv->selection,
priv->drag_begin_at, priv->drag_begin_at,
priv->drag_selection_at); priv->drag_selection_at);
priv->drag_begin_at = -1; priv->drag_begin_at = -1;
@ -368,15 +368,15 @@ sp_visualizer_view_list_button_release_event (SpVisualizerView *self,
} }
static gboolean static gboolean
sp_visualizer_view_list_motion_notify_event (SpVisualizerView *self, sysprof_visualizer_view_list_motion_notify_event (SysprofVisualizerView *self,
GdkEventMotion *ev, GdkEventMotion *ev,
SpVisualizerList *list) SysprofVisualizerList *list)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (ev != NULL); g_assert (ev != NULL);
g_assert (SP_IS_VISUALIZER_LIST (list)); g_assert (SYSPROF_IS_VISUALIZER_LIST (list));
if (!priv->button_pressed) if (!priv->button_pressed)
return GDK_EVENT_PROPAGATE; return GDK_EVENT_PROPAGATE;
@ -389,15 +389,15 @@ sp_visualizer_view_list_motion_notify_event (SpVisualizerView *self,
} }
static void static void
sp_visualizer_view_list_realize_after (SpVisualizerView *self, sysprof_visualizer_view_list_realize_after (SysprofVisualizerView *self,
SpVisualizerList *list) SysprofVisualizerList *list)
{ {
GdkDisplay *display; GdkDisplay *display;
GdkWindow *window; GdkWindow *window;
GdkCursor *cursor; GdkCursor *cursor;
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (SP_IS_VISUALIZER_LIST (list)); g_assert (SYSPROF_IS_VISUALIZER_LIST (list));
window = gtk_widget_get_window (GTK_WIDGET (list)); window = gtk_widget_get_window (GTK_WIDGET (list));
display = gdk_window_get_display (window); display = gdk_window_get_display (window);
@ -407,44 +407,44 @@ sp_visualizer_view_list_realize_after (SpVisualizerView *self,
} }
static void static void
sp_visualizer_view_selection_changed (SpVisualizerView *self, sysprof_visualizer_view_selection_changed (SysprofVisualizerView *self,
SpSelection *selection) SysprofSelection *selection)
{ {
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (SP_IS_SELECTION (selection)); g_assert (SYSPROF_IS_SELECTION (selection));
gtk_widget_queue_draw (GTK_WIDGET (self)); gtk_widget_queue_draw (GTK_WIDGET (self));
} }
static void static void
sp_visualizer_view_finalize (GObject *object) sysprof_visualizer_view_finalize (GObject *object)
{ {
SpVisualizerView *self = (SpVisualizerView *)object; SysprofVisualizerView *self = (SysprofVisualizerView *)object;
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
g_clear_object (&priv->zoom_manager); g_clear_object (&priv->zoom_manager);
g_clear_object (&priv->selection); g_clear_object (&priv->selection);
G_OBJECT_CLASS (sp_visualizer_view_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_visualizer_view_parent_class)->finalize (object);
} }
static void static void
sp_visualizer_view_get_property (GObject *object, sysprof_visualizer_view_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpVisualizerView *self = SP_VISUALIZER_VIEW (object); SysprofVisualizerView *self = SYSPROF_VISUALIZER_VIEW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_READER: case PROP_READER:
g_value_set_boxed (value, sp_visualizer_view_get_reader (self)); g_value_set_boxed (value, sysprof_visualizer_view_get_reader (self));
break; break;
case PROP_ZOOM_MANAGER: case PROP_ZOOM_MANAGER:
g_value_set_object (value, sp_visualizer_view_get_zoom_manager (self)); g_value_set_object (value, sysprof_visualizer_view_get_zoom_manager (self));
break; break;
default: default:
@ -453,21 +453,21 @@ sp_visualizer_view_get_property (GObject *object,
} }
static void static void
sp_visualizer_view_set_property (GObject *object, sysprof_visualizer_view_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpVisualizerView *self = SP_VISUALIZER_VIEW (object); SysprofVisualizerView *self = SYSPROF_VISUALIZER_VIEW (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_READER: case PROP_READER:
sp_visualizer_view_set_reader (self, g_value_get_boxed (value)); sysprof_visualizer_view_set_reader (self, g_value_get_boxed (value));
break; break;
case PROP_ZOOM_MANAGER: case PROP_ZOOM_MANAGER:
sp_visualizer_view_set_zoom_manager (self, g_value_get_object (value)); sysprof_visualizer_view_set_zoom_manager (self, g_value_get_object (value));
break; break;
default: default:
@ -476,31 +476,31 @@ sp_visualizer_view_set_property (GObject *object,
} }
static void static void
sp_visualizer_view_class_init (SpVisualizerViewClass *klass) sysprof_visualizer_view_class_init (SysprofVisualizerViewClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
SpThemeManager *theme_manager = sp_theme_manager_get_default (); SysprofThemeManager *theme_manager = sysprof_theme_manager_get_default ();
object_class->finalize = sp_visualizer_view_finalize; object_class->finalize = sysprof_visualizer_view_finalize;
object_class->get_property = sp_visualizer_view_get_property; object_class->get_property = sysprof_visualizer_view_get_property;
object_class->set_property = sp_visualizer_view_set_property; object_class->set_property = sysprof_visualizer_view_set_property;
widget_class->draw = sp_visualizer_view_draw; widget_class->draw = sysprof_visualizer_view_draw;
widget_class->size_allocate = sp_visualizer_view_size_allocate; widget_class->size_allocate = sysprof_visualizer_view_size_allocate;
properties [PROP_READER] = properties [PROP_READER] =
g_param_spec_boxed ("reader", g_param_spec_boxed ("reader",
"Reader", "Reader",
"The reader for the visualizers", "The reader for the visualizers",
SP_TYPE_CAPTURE_READER, SYSPROF_TYPE_CAPTURE_READER,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
properties [PROP_ZOOM_MANAGER] = properties [PROP_ZOOM_MANAGER] =
g_param_spec_object ("zoom-manager", g_param_spec_object ("zoom-manager",
"Zoom Manager", "Zoom Manager",
"The zoom manager for the view", "The zoom manager for the view",
SP_TYPE_ZOOM_MANAGER, SYSPROF_TYPE_ZOOM_MANAGER,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
@ -509,37 +509,37 @@ sp_visualizer_view_class_init (SpVisualizerViewClass *klass)
g_signal_new ("visualizer-added", g_signal_new ("visualizer-added",
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (SpVisualizerViewClass, visualizer_added), G_STRUCT_OFFSET (SysprofVisualizerViewClass, visualizer_added),
NULL, NULL, NULL, NULL, NULL, NULL,
G_TYPE_NONE, 1, SP_TYPE_VISUALIZER_ROW); G_TYPE_NONE, 1, SYSPROF_TYPE_VISUALIZER_ROW);
signals [VISUALIZER_REMOVED] = signals [VISUALIZER_REMOVED] =
g_signal_new ("visualizer-removed", g_signal_new ("visualizer-removed",
G_TYPE_FROM_CLASS (klass), G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (SpVisualizerViewClass, visualizer_removed), G_STRUCT_OFFSET (SysprofVisualizerViewClass, visualizer_removed),
NULL, NULL, NULL, NULL, NULL, NULL,
G_TYPE_NONE, 1, SP_TYPE_VISUALIZER_ROW); G_TYPE_NONE, 1, SYSPROF_TYPE_VISUALIZER_ROW);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sp-visualizer-view.ui"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sysprof-visualizer-view.ui");
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, list); gtk_widget_class_bind_template_child_private (widget_class, SysprofVisualizerView, list);
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, scroller); gtk_widget_class_bind_template_child_private (widget_class, SysprofVisualizerView, scroller);
gtk_widget_class_bind_template_child_private (widget_class, SpVisualizerView, ticks); gtk_widget_class_bind_template_child_private (widget_class, SysprofVisualizerView, ticks);
gtk_widget_class_set_css_name (widget_class, "visualizers"); gtk_widget_class_set_css_name (widget_class, "visualizers");
sp_theme_manager_register_resource (theme_manager, NULL, NULL, "/org/gnome/sysprof/css/SpVisualizerView-shared.css"); sysprof_theme_manager_register_resource (theme_manager, NULL, NULL, "/org/gnome/sysprof/css/SysprofVisualizerView-shared.css");
sp_theme_manager_register_resource (theme_manager, "Adwaita", NULL, "/org/gnome/sysprof/css/SpVisualizerView-Adwaita.css"); sysprof_theme_manager_register_resource (theme_manager, "Adwaita", NULL, "/org/gnome/sysprof/css/SysprofVisualizerView-Adwaita.css");
sp_theme_manager_register_resource (theme_manager, "Adwaita", "dark", "/org/gnome/sysprof/css/SpVisualizerView-Adwaita-dark.css"); sysprof_theme_manager_register_resource (theme_manager, "Adwaita", "dark", "/org/gnome/sysprof/css/SysprofVisualizerView-Adwaita-dark.css");
g_type_ensure (SP_TYPE_VISUALIZER_LIST); g_type_ensure (SYSPROF_TYPE_VISUALIZER_LIST);
g_type_ensure (SP_TYPE_VISUALIZER_TICKS); g_type_ensure (SYSPROF_TYPE_VISUALIZER_TICKS);
} }
static void static void
sp_visualizer_view_init (SpVisualizerView *self) sysprof_visualizer_view_init (SysprofVisualizerView *self)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
GtkAdjustment *hadjustment; GtkAdjustment *hadjustment;
priv->drag_begin_at = -1; priv->drag_begin_at = -1;
@ -547,47 +547,47 @@ sp_visualizer_view_init (SpVisualizerView *self)
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));
priv->selection = g_object_new (SP_TYPE_SELECTION, NULL); priv->selection = g_object_new (SYSPROF_TYPE_SELECTION, NULL);
g_signal_connect_object (priv->selection, g_signal_connect_object (priv->selection,
"changed", "changed",
G_CALLBACK (sp_visualizer_view_selection_changed), G_CALLBACK (sysprof_visualizer_view_selection_changed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->list, g_signal_connect_object (priv->list,
"button-press-event", "button-press-event",
G_CALLBACK (sp_visualizer_view_list_button_press_event), G_CALLBACK (sysprof_visualizer_view_list_button_press_event),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->list, g_signal_connect_object (priv->list,
"button-release-event", "button-release-event",
G_CALLBACK (sp_visualizer_view_list_button_release_event), G_CALLBACK (sysprof_visualizer_view_list_button_release_event),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->list, g_signal_connect_object (priv->list,
"motion-notify-event", "motion-notify-event",
G_CALLBACK (sp_visualizer_view_list_motion_notify_event), G_CALLBACK (sysprof_visualizer_view_list_motion_notify_event),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->list, g_signal_connect_object (priv->list,
"realize", "realize",
G_CALLBACK (sp_visualizer_view_list_realize_after), G_CALLBACK (sysprof_visualizer_view_list_realize_after),
self, self,
G_CONNECT_SWAPPED | G_CONNECT_AFTER); G_CONNECT_SWAPPED | G_CONNECT_AFTER);
g_signal_connect_object (priv->list, g_signal_connect_object (priv->list,
"add", "add",
G_CALLBACK (sp_visualizer_view_row_added), G_CALLBACK (sysprof_visualizer_view_row_added),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (priv->list, g_signal_connect_object (priv->list,
"remove", "remove",
G_CALLBACK (sp_visualizer_view_row_removed), G_CALLBACK (sysprof_visualizer_view_row_removed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
@ -595,69 +595,69 @@ sp_visualizer_view_init (SpVisualizerView *self)
g_signal_connect_object (hadjustment, g_signal_connect_object (hadjustment,
"value-changed", "value-changed",
G_CALLBACK (sp_visualizer_view_hadjustment_value_changed), G_CALLBACK (sysprof_visualizer_view_hadjustment_value_changed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
} }
/** /**
* sp_visualizer_view_get_reader: * sysprof_visualizer_view_get_reader:
* *
* Returns: (transfer none): An #SpCaptureReader * Returns: (transfer none): An #SysprofCaptureReader
*/ */
SpCaptureReader * SysprofCaptureReader *
sp_visualizer_view_get_reader (SpVisualizerView *self) sysprof_visualizer_view_get_reader (SysprofVisualizerView *self)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_return_val_if_fail (SP_IS_VISUALIZER_VIEW (self), NULL); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_VIEW (self), NULL);
return priv->reader; return priv->reader;
} }
void void
sp_visualizer_view_set_reader (SpVisualizerView *self, sysprof_visualizer_view_set_reader (SysprofVisualizerView *self,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_return_if_fail (SP_IS_VISUALIZER_VIEW (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_VIEW (self));
if (priv->reader != reader) if (priv->reader != reader)
{ {
g_clear_pointer (&priv->reader, sp_capture_reader_unref); g_clear_pointer (&priv->reader, sysprof_capture_reader_unref);
if (reader != NULL) if (reader != NULL)
{ {
gint64 begin_time; gint64 begin_time;
priv->reader = sp_capture_reader_ref (reader); priv->reader = sysprof_capture_reader_ref (reader);
begin_time = sp_capture_reader_get_start_time (priv->reader); begin_time = sysprof_capture_reader_get_start_time (priv->reader);
sp_visualizer_ticks_set_epoch (priv->ticks, begin_time); sysprof_visualizer_ticks_set_epoch (priv->ticks, begin_time);
sp_visualizer_ticks_set_time_range (priv->ticks, begin_time, begin_time); sysprof_visualizer_ticks_set_time_range (priv->ticks, begin_time, begin_time);
sp_selection_unselect_all (priv->selection); sysprof_selection_unselect_all (priv->selection);
} }
sp_visualizer_list_set_reader (priv->list, reader); sysprof_visualizer_list_set_reader (priv->list, reader);
sp_visualizer_view_update_ticks (self); sysprof_visualizer_view_update_ticks (self);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_READER]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_READER]);
} }
} }
static void static void
sp_visualizer_view_add_child (GtkBuildable *buildable, sysprof_visualizer_view_add_child (GtkBuildable *buildable,
GtkBuilder *builder, GtkBuilder *builder,
GObject *child, GObject *child,
const gchar *type) const gchar *type)
{ {
SpVisualizerView *self = (SpVisualizerView *)buildable; SysprofVisualizerView *self = (SysprofVisualizerView *)buildable;
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (GTK_IS_BUILDER (builder)); g_assert (GTK_IS_BUILDER (builder));
g_assert (G_IS_OBJECT (child)); g_assert (G_IS_OBJECT (child));
@ -674,50 +674,50 @@ static void
buildable_iface_init (GtkBuildableIface *iface) buildable_iface_init (GtkBuildableIface *iface)
{ {
parent_buildable = g_type_interface_peek_parent (iface); parent_buildable = g_type_interface_peek_parent (iface);
iface->add_child = sp_visualizer_view_add_child; iface->add_child = sysprof_visualizer_view_add_child;
} }
static void static void
sp_visualizer_view_zoom_manager_notify_zoom (SpVisualizerView *self, sysprof_visualizer_view_zoom_manager_notify_zoom (SysprofVisualizerView *self,
GParamSpec *pspec, GParamSpec *pspec,
SpZoomManager *zoom_manager) SysprofZoomManager *zoom_manager)
{ {
g_assert (SP_IS_VISUALIZER_VIEW (self)); g_assert (SYSPROF_IS_VISUALIZER_VIEW (self));
g_assert (SP_IS_ZOOM_MANAGER (zoom_manager)); g_assert (SYSPROF_IS_ZOOM_MANAGER (zoom_manager));
sp_visualizer_view_update_ticks (self); sysprof_visualizer_view_update_ticks (self);
} }
/** /**
* sp_visualizer_view_get_zoom_manager: * sysprof_visualizer_view_get_zoom_manager:
* *
* Returns: (transfer none) (nullable): An #SpZoomManager or %NULL * Returns: (transfer none) (nullable): An #SysprofZoomManager or %NULL
*/ */
SpZoomManager * SysprofZoomManager *
sp_visualizer_view_get_zoom_manager (SpVisualizerView *self) sysprof_visualizer_view_get_zoom_manager (SysprofVisualizerView *self)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_return_val_if_fail (SP_IS_VISUALIZER_VIEW (self), NULL); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_VIEW (self), NULL);
return priv->zoom_manager; return priv->zoom_manager;
} }
void void
sp_visualizer_view_set_zoom_manager (SpVisualizerView *self, sysprof_visualizer_view_set_zoom_manager (SysprofVisualizerView *self,
SpZoomManager *zoom_manager) SysprofZoomManager *zoom_manager)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_return_if_fail (SP_IS_VISUALIZER_VIEW (self)); g_return_if_fail (SYSPROF_IS_VISUALIZER_VIEW (self));
g_return_if_fail (!zoom_manager || SP_IS_ZOOM_MANAGER (zoom_manager)); g_return_if_fail (!zoom_manager || SYSPROF_IS_ZOOM_MANAGER (zoom_manager));
if (priv->zoom_manager != zoom_manager) if (priv->zoom_manager != zoom_manager)
{ {
if (priv->zoom_manager != NULL) if (priv->zoom_manager != NULL)
{ {
g_signal_handlers_disconnect_by_func (priv->zoom_manager, g_signal_handlers_disconnect_by_func (priv->zoom_manager,
G_CALLBACK (sp_visualizer_view_zoom_manager_notify_zoom), G_CALLBACK (sysprof_visualizer_view_zoom_manager_notify_zoom),
self); self);
g_clear_object (&priv->zoom_manager); g_clear_object (&priv->zoom_manager);
} }
@ -727,12 +727,12 @@ sp_visualizer_view_set_zoom_manager (SpVisualizerView *self,
priv->zoom_manager = g_object_ref (zoom_manager); priv->zoom_manager = g_object_ref (zoom_manager);
g_signal_connect_object (priv->zoom_manager, g_signal_connect_object (priv->zoom_manager,
"notify::zoom", "notify::zoom",
G_CALLBACK (sp_visualizer_view_zoom_manager_notify_zoom), G_CALLBACK (sysprof_visualizer_view_zoom_manager_notify_zoom),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
} }
sp_visualizer_list_set_zoom_manager (priv->list, zoom_manager); sysprof_visualizer_list_set_zoom_manager (priv->list, zoom_manager);
gtk_widget_queue_resize (GTK_WIDGET (self)); gtk_widget_queue_resize (GTK_WIDGET (self));
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM_MANAGER]); g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM_MANAGER]);
@ -740,19 +740,19 @@ sp_visualizer_view_set_zoom_manager (SpVisualizerView *self,
} }
/** /**
* sp_visualizer_view_get_selection: * sysprof_visualizer_view_get_selection:
* *
* Gets the #SpSelection instance for the visualizer view. * Gets the #SysprofSelection instance for the visualizer view.
* This can be used to alter the selection or selections of the visualizers. * This can be used to alter the selection or selections of the visualizers.
* *
* Returns: (transfer none): An #SpSelection. * Returns: (transfer none): An #SysprofSelection.
*/ */
SpSelection * SysprofSelection *
sp_visualizer_view_get_selection (SpVisualizerView *self) sysprof_visualizer_view_get_selection (SysprofVisualizerView *self)
{ {
SpVisualizerViewPrivate *priv = sp_visualizer_view_get_instance_private (self); SysprofVisualizerViewPrivate *priv = sysprof_visualizer_view_get_instance_private (self);
g_return_val_if_fail (SP_IS_VISUALIZER_VIEW (self), NULL); g_return_val_if_fail (SYSPROF_IS_VISUALIZER_VIEW (self), NULL);
return priv->selection; return priv->selection;
} }

View File

@ -1,4 +1,4 @@
/* sp-visualizer-view.h /* sysprof-visualizer-view.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -23,26 +23,26 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <sysprof.h> #include <sysprof.h>
#include "sp-visualizer-row.h" #include "sysprof-visualizer-row.h"
#include "sp-selection.h" #include "sysprof-selection.h"
#include "sp-zoom-manager.h" #include "sysprof-zoom-manager.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_VISUALIZER_VIEW (sp_visualizer_view_get_type()) #define SYSPROF_TYPE_VISUALIZER_VIEW (sysprof_visualizer_view_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpVisualizerView, sp_visualizer_view, SP, VISUALIZER_VIEW, GtkBin) G_DECLARE_DERIVABLE_TYPE (SysprofVisualizerView, sysprof_visualizer_view, SYSPROF, VISUALIZER_VIEW, GtkBin)
struct _SpVisualizerViewClass struct _SysprofVisualizerViewClass
{ {
GtkBinClass parent_class; GtkBinClass parent_class;
void (*visualizer_added) (SpVisualizerView *self, void (*visualizer_added) (SysprofVisualizerView *self,
SpVisualizerRow *visualizer); SysprofVisualizerRow *visualizer);
void (*visualizer_removed) (SpVisualizerView *self, void (*visualizer_removed) (SysprofVisualizerView *self,
SpVisualizerRow *visualizer); SysprofVisualizerRow *visualizer);
gpointer _reserved1; gpointer _reserved1;
gpointer _reserved2; gpointer _reserved2;
@ -63,18 +63,18 @@ struct _SpVisualizerViewClass
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GtkWidget *sp_visualizer_view_new (void); GtkWidget *sysprof_visualizer_view_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpCaptureReader *sp_visualizer_view_get_reader (SpVisualizerView *self); SysprofCaptureReader *sysprof_visualizer_view_get_reader (SysprofVisualizerView *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_visualizer_view_set_reader (SpVisualizerView *self, void sysprof_visualizer_view_set_reader (SysprofVisualizerView *self,
SpCaptureReader *reader); SysprofCaptureReader *reader);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpZoomManager *sp_visualizer_view_get_zoom_manager (SpVisualizerView *self); SysprofZoomManager *sysprof_visualizer_view_get_zoom_manager (SysprofVisualizerView *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_visualizer_view_set_zoom_manager (SpVisualizerView *self, void sysprof_visualizer_view_set_zoom_manager (SysprofVisualizerView *self,
SpZoomManager *zoom_manager); SysprofZoomManager *zoom_manager);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpSelection *sp_visualizer_view_get_selection (SpVisualizerView *self); SysprofSelection *sysprof_visualizer_view_get_selection (SysprofVisualizerView *self);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-zoom-manager.c /* sysprof-zoom-manager.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,16 +18,16 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-zoom-manager" #define G_LOG_DOMAIN "sysprof-zoom-manager"
#include "config.h" #include "config.h"
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <gio/gio.h> #include <gio/gio.h>
#include "sp-zoom-manager.h" #include "sysprof-zoom-manager.h"
struct _SpZoomManager struct _SysprofZoomManager
{ {
GObject parent_instance; GObject parent_instance;
@ -50,7 +50,7 @@ enum {
static void action_group_iface_init (GActionGroupInterface *iface); static void action_group_iface_init (GActionGroupInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpZoomManager, sp_zoom_manager, G_TYPE_OBJECT, 0, G_DEFINE_TYPE_EXTENDED (SysprofZoomManager, sysprof_zoom_manager, G_TYPE_OBJECT, 0,
G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, action_group_iface_init)) G_IMPLEMENT_INTERFACE (G_TYPE_ACTION_GROUP, action_group_iface_init))
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
@ -77,63 +77,63 @@ static gdouble zoom_levels[] = {
}; };
static void static void
sp_zoom_manager_zoom_in_action (GSimpleAction *action, sysprof_zoom_manager_zoom_in_action (GSimpleAction *action,
GVariant *param, GVariant *param,
gpointer user_data) gpointer user_data)
{ {
SpZoomManager *self = user_data; SysprofZoomManager *self = user_data;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
sp_zoom_manager_zoom_in (self); sysprof_zoom_manager_zoom_in (self);
} }
static void static void
sp_zoom_manager_zoom_out_action (GSimpleAction *action, sysprof_zoom_manager_zoom_out_action (GSimpleAction *action,
GVariant *param, GVariant *param,
gpointer user_data) gpointer user_data)
{ {
SpZoomManager *self = user_data; SysprofZoomManager *self = user_data;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
sp_zoom_manager_zoom_out (self); sysprof_zoom_manager_zoom_out (self);
} }
static void static void
sp_zoom_manager_zoom_one_action (GSimpleAction *action, sysprof_zoom_manager_zoom_one_action (GSimpleAction *action,
GVariant *param, GVariant *param,
gpointer user_data) gpointer user_data)
{ {
SpZoomManager *self = user_data; SysprofZoomManager *self = user_data;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
sp_zoom_manager_reset (self); sysprof_zoom_manager_reset (self);
} }
static void static void
sp_zoom_manager_get_property (GObject *object, sysprof_zoom_manager_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpZoomManager *self = SP_ZOOM_MANAGER (object); SysprofZoomManager *self = SYSPROF_ZOOM_MANAGER (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_MIN_ZOOM: case PROP_MIN_ZOOM:
g_value_set_double (value, sp_zoom_manager_get_min_zoom (self)); g_value_set_double (value, sysprof_zoom_manager_get_min_zoom (self));
break; break;
case PROP_MAX_ZOOM: case PROP_MAX_ZOOM:
g_value_set_double (value, sp_zoom_manager_get_max_zoom (self)); g_value_set_double (value, sysprof_zoom_manager_get_max_zoom (self));
break; break;
case PROP_ZOOM: case PROP_ZOOM:
g_value_set_double (value, sp_zoom_manager_get_zoom (self)); g_value_set_double (value, sysprof_zoom_manager_get_zoom (self));
break; break;
case PROP_CAN_ZOOM_IN: case PROP_CAN_ZOOM_IN:
g_value_set_boolean (value, sp_zoom_manager_get_can_zoom_in (self)); g_value_set_boolean (value, sysprof_zoom_manager_get_can_zoom_in (self));
break; break;
case PROP_CAN_ZOOM_OUT: case PROP_CAN_ZOOM_OUT:
g_value_set_boolean (value, sp_zoom_manager_get_can_zoom_out (self)); g_value_set_boolean (value, sysprof_zoom_manager_get_can_zoom_out (self));
break; break;
default: default:
@ -142,25 +142,25 @@ sp_zoom_manager_get_property (GObject *object,
} }
static void static void
sp_zoom_manager_set_property (GObject *object, sysprof_zoom_manager_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpZoomManager *self = SP_ZOOM_MANAGER (object); SysprofZoomManager *self = SYSPROF_ZOOM_MANAGER (object);
switch (prop_id) switch (prop_id)
{ {
case PROP_MIN_ZOOM: case PROP_MIN_ZOOM:
sp_zoom_manager_set_min_zoom (self, g_value_get_double (value)); sysprof_zoom_manager_set_min_zoom (self, g_value_get_double (value));
break; break;
case PROP_MAX_ZOOM: case PROP_MAX_ZOOM:
sp_zoom_manager_set_max_zoom (self, g_value_get_double (value)); sysprof_zoom_manager_set_max_zoom (self, g_value_get_double (value));
break; break;
case PROP_ZOOM: case PROP_ZOOM:
sp_zoom_manager_set_zoom (self, g_value_get_double (value)); sysprof_zoom_manager_set_zoom (self, g_value_get_double (value));
break; break;
default: default:
@ -169,12 +169,12 @@ sp_zoom_manager_set_property (GObject *object,
} }
static void static void
sp_zoom_manager_class_init (SpZoomManagerClass *klass) sysprof_zoom_manager_class_init (SysprofZoomManagerClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->get_property = sp_zoom_manager_get_property; object_class->get_property = sysprof_zoom_manager_get_property;
object_class->set_property = sp_zoom_manager_set_property; object_class->set_property = sysprof_zoom_manager_set_property;
properties [PROP_CAN_ZOOM_IN] = properties [PROP_CAN_ZOOM_IN] =
g_param_spec_boolean ("can-zoom-in", g_param_spec_boolean ("can-zoom-in",
@ -221,12 +221,12 @@ sp_zoom_manager_class_init (SpZoomManagerClass *klass)
} }
static void static void
sp_zoom_manager_init (SpZoomManager *self) sysprof_zoom_manager_init (SysprofZoomManager *self)
{ {
static const GActionEntry entries[] = { static const GActionEntry entries[] = {
{ "zoom-in", sp_zoom_manager_zoom_in_action }, { "zoom-in", sysprof_zoom_manager_zoom_in_action },
{ "zoom-out", sp_zoom_manager_zoom_out_action }, { "zoom-out", sysprof_zoom_manager_zoom_out_action },
{ "zoom-one", sp_zoom_manager_zoom_one_action }, { "zoom-one", sysprof_zoom_manager_zoom_one_action },
}; };
GAction *action; GAction *action;
@ -247,49 +247,49 @@ sp_zoom_manager_init (SpZoomManager *self)
g_object_bind_property (self, "can-zoom-out", action, "enabled", G_BINDING_SYNC_CREATE); g_object_bind_property (self, "can-zoom-out", action, "enabled", G_BINDING_SYNC_CREATE);
} }
SpZoomManager * SysprofZoomManager *
sp_zoom_manager_new (void) sysprof_zoom_manager_new (void)
{ {
return g_object_new (SP_TYPE_ZOOM_MANAGER, NULL); return g_object_new (SYSPROF_TYPE_ZOOM_MANAGER, NULL);
} }
gboolean gboolean
sp_zoom_manager_get_can_zoom_in (SpZoomManager *self) sysprof_zoom_manager_get_can_zoom_in (SysprofZoomManager *self)
{ {
g_return_val_if_fail (SP_IS_ZOOM_MANAGER (self), FALSE); g_return_val_if_fail (SYSPROF_IS_ZOOM_MANAGER (self), FALSE);
return self->max_zoom == 0.0 || self->zoom < self->max_zoom; return self->max_zoom == 0.0 || self->zoom < self->max_zoom;
} }
gboolean gboolean
sp_zoom_manager_get_can_zoom_out (SpZoomManager *self) sysprof_zoom_manager_get_can_zoom_out (SysprofZoomManager *self)
{ {
g_return_val_if_fail (SP_IS_ZOOM_MANAGER (self), FALSE); g_return_val_if_fail (SYSPROF_IS_ZOOM_MANAGER (self), FALSE);
return self->min_zoom == 0.0 || self->zoom > self->min_zoom; return self->min_zoom == 0.0 || self->zoom > self->min_zoom;
} }
gboolean gboolean
sp_zoom_manager_get_min_zoom (SpZoomManager *self) sysprof_zoom_manager_get_min_zoom (SysprofZoomManager *self)
{ {
g_return_val_if_fail (SP_IS_ZOOM_MANAGER (self), FALSE); g_return_val_if_fail (SYSPROF_IS_ZOOM_MANAGER (self), FALSE);
return self->min_zoom; return self->min_zoom;
} }
gboolean gboolean
sp_zoom_manager_get_max_zoom (SpZoomManager *self) sysprof_zoom_manager_get_max_zoom (SysprofZoomManager *self)
{ {
g_return_val_if_fail (SP_IS_ZOOM_MANAGER (self), FALSE); g_return_val_if_fail (SYSPROF_IS_ZOOM_MANAGER (self), FALSE);
return self->max_zoom; return self->max_zoom;
} }
void void
sp_zoom_manager_set_min_zoom (SpZoomManager *self, sysprof_zoom_manager_set_min_zoom (SysprofZoomManager *self,
gdouble min_zoom) gdouble min_zoom)
{ {
g_return_if_fail (SP_IS_ZOOM_MANAGER (self)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (self));
if (min_zoom != self->min_zoom) if (min_zoom != self->min_zoom)
{ {
@ -300,10 +300,10 @@ sp_zoom_manager_set_min_zoom (SpZoomManager *self,
} }
void void
sp_zoom_manager_set_max_zoom (SpZoomManager *self, sysprof_zoom_manager_set_max_zoom (SysprofZoomManager *self,
gdouble max_zoom) gdouble max_zoom)
{ {
g_return_if_fail (SP_IS_ZOOM_MANAGER (self)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (self));
if (max_zoom != self->max_zoom) if (max_zoom != self->max_zoom)
{ {
@ -314,13 +314,13 @@ sp_zoom_manager_set_max_zoom (SpZoomManager *self,
} }
void void
sp_zoom_manager_zoom_in (SpZoomManager *self) sysprof_zoom_manager_zoom_in (SysprofZoomManager *self)
{ {
gdouble zoom; gdouble zoom;
g_return_if_fail (SP_IS_ZOOM_MANAGER (self)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (self));
if (!sp_zoom_manager_get_can_zoom_in (self)) if (!sysprof_zoom_manager_get_can_zoom_in (self))
return; return;
zoom = self->zoom; zoom = self->zoom;
@ -337,17 +337,17 @@ sp_zoom_manager_zoom_in (SpZoomManager *self)
if (zoom == self->zoom) if (zoom == self->zoom)
zoom *= 2; zoom *= 2;
sp_zoom_manager_set_zoom (self, zoom); sysprof_zoom_manager_set_zoom (self, zoom);
} }
void void
sp_zoom_manager_zoom_out (SpZoomManager *self) sysprof_zoom_manager_zoom_out (SysprofZoomManager *self)
{ {
gdouble zoom; gdouble zoom;
g_return_if_fail (SP_IS_ZOOM_MANAGER (self)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (self));
if (!sp_zoom_manager_get_can_zoom_out (self)) if (!sysprof_zoom_manager_get_can_zoom_out (self))
return; return;
zoom = self->zoom; zoom = self->zoom;
@ -364,33 +364,33 @@ sp_zoom_manager_zoom_out (SpZoomManager *self)
if (zoom == self->zoom) if (zoom == self->zoom)
zoom /= 2.0; zoom /= 2.0;
sp_zoom_manager_set_zoom (self, zoom); sysprof_zoom_manager_set_zoom (self, zoom);
} }
void void
sp_zoom_manager_reset (SpZoomManager *self) sysprof_zoom_manager_reset (SysprofZoomManager *self)
{ {
g_return_if_fail (SP_IS_ZOOM_MANAGER (self)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (self));
sp_zoom_manager_set_zoom (self, 1.0); sysprof_zoom_manager_set_zoom (self, 1.0);
} }
gdouble gdouble
sp_zoom_manager_get_zoom (SpZoomManager *self) sysprof_zoom_manager_get_zoom (SysprofZoomManager *self)
{ {
g_return_val_if_fail (SP_IS_ZOOM_MANAGER (self), 0.0); g_return_val_if_fail (SYSPROF_IS_ZOOM_MANAGER (self), 0.0);
return self->zoom; return self->zoom;
} }
void void
sp_zoom_manager_set_zoom (SpZoomManager *self, sysprof_zoom_manager_set_zoom (SysprofZoomManager *self,
gdouble zoom) gdouble zoom)
{ {
gdouble min_zoom; gdouble min_zoom;
gdouble max_zoom; gdouble max_zoom;
g_return_if_fail (SP_IS_ZOOM_MANAGER (self)); g_return_if_fail (SYSPROF_IS_ZOOM_MANAGER (self));
min_zoom = (self->min_zoom == 0.0) ? -G_MAXDOUBLE : self->min_zoom; min_zoom = (self->min_zoom == 0.0) ? -G_MAXDOUBLE : self->min_zoom;
max_zoom = (self->max_zoom == 0.0) ? G_MAXDOUBLE : self->max_zoom; max_zoom = (self->max_zoom == 0.0) ? G_MAXDOUBLE : self->max_zoom;
@ -410,17 +410,17 @@ sp_zoom_manager_set_zoom (SpZoomManager *self,
} }
static gchar ** static gchar **
sp_zoom_manager_list_actions (GActionGroup *action_group) sysprof_zoom_manager_list_actions (GActionGroup *action_group)
{ {
SpZoomManager *self = (SpZoomManager *)action_group; SysprofZoomManager *self = (SysprofZoomManager *)action_group;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
return g_action_group_list_actions (G_ACTION_GROUP (self->actions)); return g_action_group_list_actions (G_ACTION_GROUP (self->actions));
} }
static gboolean static gboolean
sp_zoom_manager_query_action (GActionGroup *action_group, sysprof_zoom_manager_query_action (GActionGroup *action_group,
const gchar *action_name, const gchar *action_name,
gboolean *enabled, gboolean *enabled,
const GVariantType **parameter_type, const GVariantType **parameter_type,
@ -428,9 +428,9 @@ sp_zoom_manager_query_action (GActionGroup *action_group,
GVariant **state_hint, GVariant **state_hint,
GVariant **state) GVariant **state)
{ {
SpZoomManager *self = (SpZoomManager *)action_group; SysprofZoomManager *self = (SysprofZoomManager *)action_group;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
g_assert (action_name != NULL); g_assert (action_name != NULL);
return g_action_group_query_action (G_ACTION_GROUP (self->actions), return g_action_group_query_action (G_ACTION_GROUP (self->actions),
@ -443,26 +443,26 @@ sp_zoom_manager_query_action (GActionGroup *action_group,
} }
static void static void
sp_zoom_manager_change_action_state (GActionGroup *action_group, sysprof_zoom_manager_change_action_state (GActionGroup *action_group,
const gchar *action_name, const gchar *action_name,
GVariant *value) GVariant *value)
{ {
SpZoomManager *self = (SpZoomManager *)action_group; SysprofZoomManager *self = (SysprofZoomManager *)action_group;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
g_assert (action_name != NULL); g_assert (action_name != NULL);
g_action_group_change_action_state (G_ACTION_GROUP (self->actions), action_name, value); g_action_group_change_action_state (G_ACTION_GROUP (self->actions), action_name, value);
} }
static void static void
sp_zoom_manager_activate_action (GActionGroup *action_group, sysprof_zoom_manager_activate_action (GActionGroup *action_group,
const gchar *action_name, const gchar *action_name,
GVariant *parameter) GVariant *parameter)
{ {
SpZoomManager *self = (SpZoomManager *)action_group; SysprofZoomManager *self = (SysprofZoomManager *)action_group;
g_assert (SP_IS_ZOOM_MANAGER (self)); g_assert (SYSPROF_IS_ZOOM_MANAGER (self));
g_assert (action_name != NULL); g_assert (action_name != NULL);
g_action_group_activate_action (G_ACTION_GROUP (self->actions), action_name, parameter); g_action_group_activate_action (G_ACTION_GROUP (self->actions), action_name, parameter);
@ -471,8 +471,8 @@ sp_zoom_manager_activate_action (GActionGroup *action_group,
static void static void
action_group_iface_init (GActionGroupInterface *iface) action_group_iface_init (GActionGroupInterface *iface)
{ {
iface->list_actions = sp_zoom_manager_list_actions; iface->list_actions = sysprof_zoom_manager_list_actions;
iface->query_action = sp_zoom_manager_query_action; iface->query_action = sysprof_zoom_manager_query_action;
iface->change_action_state = sp_zoom_manager_change_action_state; iface->change_action_state = sysprof_zoom_manager_change_action_state;
iface->activate_action = sp_zoom_manager_activate_action; iface->activate_action = sysprof_zoom_manager_activate_action;
} }

View File

@ -1,4 +1,4 @@
/* sp-zoom-manager.h /* sysprof-zoom-manager.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -26,37 +26,37 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_ZOOM_MANAGER (sp_zoom_manager_get_type()) #define SYSPROF_TYPE_ZOOM_MANAGER (sysprof_zoom_manager_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SpZoomManager, sp_zoom_manager, SP, ZOOM_MANAGER, GObject) G_DECLARE_FINAL_TYPE (SysprofZoomManager, sysprof_zoom_manager, SYSPROF, ZOOM_MANAGER, GObject)
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpZoomManager *sp_zoom_manager_new (void); SysprofZoomManager *sysprof_zoom_manager_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_zoom_manager_get_can_zoom_in (SpZoomManager *self); gboolean sysprof_zoom_manager_get_can_zoom_in (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_zoom_manager_get_can_zoom_out (SpZoomManager *self); gboolean sysprof_zoom_manager_get_can_zoom_out (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_zoom_manager_get_min_zoom (SpZoomManager *self); gboolean sysprof_zoom_manager_get_min_zoom (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_zoom_manager_get_max_zoom (SpZoomManager *self); gboolean sysprof_zoom_manager_get_max_zoom (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_zoom_manager_set_min_zoom (SpZoomManager *self, void sysprof_zoom_manager_set_min_zoom (SysprofZoomManager *self,
gdouble min_zoom); gdouble min_zoom);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_zoom_manager_set_max_zoom (SpZoomManager *self, void sysprof_zoom_manager_set_max_zoom (SysprofZoomManager *self,
gdouble max_zoom); gdouble max_zoom);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_zoom_manager_zoom_in (SpZoomManager *self); void sysprof_zoom_manager_zoom_in (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_zoom_manager_zoom_out (SpZoomManager *self); void sysprof_zoom_manager_zoom_out (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_zoom_manager_reset (SpZoomManager *self); void sysprof_zoom_manager_reset (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gdouble sp_zoom_manager_get_zoom (SpZoomManager *self); gdouble sysprof_zoom_manager_get_zoom (SysprofZoomManager *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_zoom_manager_set_zoom (SpZoomManager *self, void sysprof_zoom_manager_set_zoom (SysprofZoomManager *self,
gdouble zoom); gdouble zoom);
G_END_DECLS G_END_DECLS

View File

@ -37,7 +37,7 @@
#include "binfile.h" #include "binfile.h"
#include "elfparser.h" #include "elfparser.h"
#include "sp-symbol-dirs.h" #include "sysprof-symbol-dirs.h"
struct bin_file_t struct bin_file_t
{ {
@ -173,7 +173,7 @@ get_debuglink_file (ElfParser *elf,
dir = g_path_get_dirname (filename); dir = g_path_get_dirname (filename);
tries = sp_symbol_dirs_get_paths (dir, basename); tries = sysprof_symbol_dirs_get_paths (dir, basename);
for (i = 0; tries[i]; i++) for (i = 0; tries[i]; i++)
{ {

View File

@ -1,45 +1,45 @@
libsysprof_c_args = [ '-DSYSPROF_COMPILATION' ] libsysprof_c_args = [ '-DSYSPROF_COMPILATION' ]
libsysprof_public_sources = [ libsysprof_public_sources = [
'sp-callgraph-profile.c', 'sysprof-callgraph-profile.c',
'sp-capture-gobject.c', 'sysprof-capture-gobject.c',
'sp-elf-symbol-resolver.c', 'sysprof-elf-symbol-resolver.c',
'sp-hostinfo-source.c', 'sysprof-hostinfo-source.c',
'sp-jitmap-symbol-resolver.c', 'sysprof-jitmap-symbol-resolver.c',
'sp-kallsyms.c', 'sysprof-kallsyms.c',
'sp-kernel-symbol.c', 'sysprof-kernel-symbol.c',
'sp-kernel-symbol-resolver.c', 'sysprof-kernel-symbol-resolver.c',
'sp-local-profiler.c', 'sysprof-local-profiler.c',
'sp-map-lookaside.c', 'sysprof-map-lookaside.c',
'sp-process-model.c', 'sysprof-process-model.c',
'sp-process-model-item.c', 'sysprof-process-model-item.c',
'sp-profile.c', 'sysprof-profile.c',
'sp-profiler.c', 'sysprof-profiler.c',
'sp-selection.c', 'sysprof-selection.c',
'sp-source.c', 'sysprof-source.c',
'sp-symbol-dirs.c', 'sysprof-symbol-dirs.c',
'sp-symbol-resolver.c', 'sysprof-symbol-resolver.c',
] ]
libsysprof_public_headers = [ libsysprof_public_headers = [
'sp-callgraph-profile.h', 'sysprof-callgraph-profile.h',
'sp-capture-gobject.h', 'sysprof-capture-gobject.h',
'sp-elf-symbol-resolver.h', 'sysprof-elf-symbol-resolver.h',
'sp-hostinfo-source.h', 'sysprof-hostinfo-source.h',
'sp-jitmap-symbol-resolver.h', 'sysprof-jitmap-symbol-resolver.h',
'sp-kallsyms.h', 'sysprof-kallsyms.h',
'sp-kernel-symbol.h', 'sysprof-kernel-symbol.h',
'sp-kernel-symbol-resolver.h', 'sysprof-kernel-symbol-resolver.h',
'sp-local-profiler.h', 'sysprof-local-profiler.h',
'sp-map-lookaside.h', 'sysprof-map-lookaside.h',
'sp-process-model.h', 'sysprof-process-model.h',
'sp-process-model-item.h', 'sysprof-process-model-item.h',
'sp-profile.h', 'sysprof-profile.h',
'sp-profiler.h', 'sysprof-profiler.h',
'sp-selection.h', 'sysprof-selection.h',
'sp-source.h', 'sysprof-source.h',
'sp-symbol-dirs.h', 'sysprof-symbol-dirs.h',
'sp-symbol-resolver.h', 'sysprof-symbol-resolver.h',
'sysprof.h', 'sysprof.h',
] ]
@ -48,8 +48,8 @@ libsysprof_private_sources = [
'binfile.c', 'binfile.c',
'demangle.cpp', 'demangle.cpp',
'elfparser.c', 'elfparser.c',
'sp-source-util.c', 'sysprof-source-util.c',
'sp-line-reader.c', 'sysprof-line-reader.c',
] ]
libsysprof_public_sources += libsysprof_capture_sources libsysprof_public_sources += libsysprof_capture_sources
@ -62,19 +62,19 @@ libsysprof_deps = [
if host_machine.system() == 'linux' if host_machine.system() == 'linux'
libsysprof_public_sources += [ libsysprof_public_sources += [
'sp-gjs-source.c', 'sysprof-gjs-source.c',
'sp-memory-source.c', 'sysprof-memory-source.c',
'sp-perf-counter.c', 'sysprof-perf-counter.c',
'sp-perf-source.c', 'sysprof-perf-source.c',
'sp-proc-source.c', 'sysprof-proc-source.c',
] ]
libsysprof_public_headers += [ libsysprof_public_headers += [
'sp-gjs-source.h', 'sysprof-gjs-source.h',
'sp-memory-source.h', 'sysprof-memory-source.h',
'sp-perf-counter.h', 'sysprof-perf-counter.h',
'sp-perf-source.h', 'sysprof-perf-source.h',
'sp-proc-source.h', 'sysprof-proc-source.h',
] ]
endif endif

View File

@ -1,125 +0,0 @@
/* sp-jitmap-symbol-resolver.c
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#include "config.h"
#include "sp-kernel-symbol.h"
#include "sp-jitmap-symbol-resolver.h"
struct _SpJitmapSymbolResolver
{
GObject parent_instance;
GHashTable *jitmap;
};
static void symbol_resolver_iface_init (SpSymbolResolverInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpJitmapSymbolResolver,
sp_jitmap_symbol_resolver,
G_TYPE_OBJECT,
0,
G_IMPLEMENT_INTERFACE (SP_TYPE_SYMBOL_RESOLVER,
symbol_resolver_iface_init))
static void
sp_jitmap_symbol_resolver_finalize (GObject *object)
{
SpJitmapSymbolResolver *self = (SpJitmapSymbolResolver *)object;
g_clear_pointer (&self->jitmap, g_hash_table_unref);
G_OBJECT_CLASS (sp_jitmap_symbol_resolver_parent_class)->finalize (object);
}
static void
sp_jitmap_symbol_resolver_class_init (SpJitmapSymbolResolverClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_jitmap_symbol_resolver_finalize;
}
static void
sp_jitmap_symbol_resolver_init (SpJitmapSymbolResolver *self)
{
self->jitmap = g_hash_table_new_full (NULL, NULL, NULL, g_free);
}
static void
sp_jitmap_symbol_resolver_load (SpSymbolResolver *resolver,
SpCaptureReader *reader)
{
SpJitmapSymbolResolver *self = (SpJitmapSymbolResolver *)resolver;
SpCaptureFrameType type;
g_assert (SP_IS_JITMAP_SYMBOL_RESOLVER (self));
g_assert (reader != NULL);
while (sp_capture_reader_peek_type (reader, &type))
{
g_autoptr(GHashTable) jitmap = NULL;
GHashTableIter iter;
SpCaptureAddress addr;
const gchar *str;
if (type != SP_CAPTURE_FRAME_JITMAP)
{
if (!sp_capture_reader_skip (reader))
return;
continue;
}
if (!(jitmap = sp_capture_reader_read_jitmap (reader)))
return;
g_hash_table_iter_init (&iter, jitmap);
while (g_hash_table_iter_next (&iter, (gpointer *)&addr, (gpointer *)&str))
g_hash_table_insert (self->jitmap, GSIZE_TO_POINTER (addr), g_strdup (str));
}
}
static gchar *
sp_jitmap_symbol_resolver_resolve (SpSymbolResolver *resolver,
guint64 time,
GPid pid,
SpCaptureAddress address,
GQuark *tag)
{
SpJitmapSymbolResolver *self = (SpJitmapSymbolResolver *)resolver;
g_assert (SP_IS_JITMAP_SYMBOL_RESOLVER (self));
*tag = 0;
return g_strdup (g_hash_table_lookup (self->jitmap, GSIZE_TO_POINTER (address)));
}
static void
symbol_resolver_iface_init (SpSymbolResolverInterface *iface)
{
iface->load = sp_jitmap_symbol_resolver_load;
iface->resolve = sp_jitmap_symbol_resolver_resolve;
}
SpSymbolResolver *
sp_jitmap_symbol_resolver_new (void)
{
return g_object_new (SP_TYPE_JITMAP_SYMBOL_RESOLVER, NULL);
}

View File

@ -1,184 +0,0 @@
/* sp-profiler.h
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include "sysprof-version-macros.h"
#include "sp-capture-writer.h"
#include "sp-source.h"
G_BEGIN_DECLS
#define SP_TYPE_PROFILER (sp_profiler_get_type())
SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_INTERFACE (SpProfiler, sp_profiler, SP, PROFILER, GObject)
struct _SpProfilerInterface
{
GTypeInterface parent_interface;
/**
* SpProfiler::failed:
* @self: A #SpProfiler
* @reason: A #GError representing the reason for the failure
*
* This signal is emitted if the profiler failed. Note that
* #SpProfiler::stopped will also be emitted, but does not allow for
* receiving the error condition.
*/
void (*failed) (SpProfiler *self,
const GError *error);
/**
* SpProfiler::stopped:
* @self: A #SpProfiler
*
* This signal is emitted when a profiler is stopped. It will always be
* emitted after a sp_profiler_start() has been called, either after
* completion of sp_profiler_stop() or after a failure or after asynchronous
* completion of stopping.
*/
void (*stopped) (SpProfiler *self);
/**
* SpProfiler::add_source:
*
* Adds a source to the profiler.
*/
void (*add_source) (SpProfiler *profiler,
SpSource *source);
/**
* SpProfiler::set_writer:
*
* Sets the writer to use for the profiler.
*/
void (*set_writer) (SpProfiler *self,
SpCaptureWriter *writer);
/**
* SpProfiler::get_writer:
*
* Gets the writer that is being used to capture.
*
* Returns: (nullable) (transfer none): A #SpCaptureWriter.
*/
SpCaptureWriter *(*get_writer) (SpProfiler *self);
/**
* SpProfiler::start:
*
* Starts the profiler.
*/
void (*start) (SpProfiler *self);
/**
* SpProfiler::stop:
*
* Stops the profiler.
*/
void (*stop) (SpProfiler *self);
/**
* SpProfiler::add_pid:
*
* Add a pid to be profiled.
*/
void (*add_pid) (SpProfiler *self,
GPid pid);
/**
* SpProfiler::remove_pid:
*
* Remove a pid from the profiler. This will not be called after
* SpProfiler::start has been called.
*/
void (*remove_pid) (SpProfiler *self,
GPid pid);
/**
* SpProfiler::get_pids:
*
* Gets the pids that are part of this profiling session. If no pids
* have been specified, %NULL is returned.
*
* Returns: (nullable) (transfer none): An array of #GPid, or %NULL.
*/
const GPid *(*get_pids) (SpProfiler *self,
guint *n_pids);
};
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_emit_failed (SpProfiler *self,
const GError *error);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_emit_stopped (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
gdouble sp_profiler_get_elapsed (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_profiler_get_is_mutable (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_profiler_get_spawn_inherit_environ (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_set_spawn_inherit_environ (SpProfiler *self,
gboolean spawn_inherit_environ);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_profiler_get_whole_system (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_set_whole_system (SpProfiler *self,
gboolean whole_system);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_profiler_get_spawn (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_set_spawn (SpProfiler *self,
gboolean spawn);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_set_spawn_argv (SpProfiler *self,
const gchar * const *spawn_argv);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_set_spawn_env (SpProfiler *self,
const gchar * const *spawn_env);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_add_source (SpProfiler *self,
SpSource *source);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_set_writer (SpProfiler *self,
SpCaptureWriter *writer);
SYSPROF_AVAILABLE_IN_ALL
SpCaptureWriter *sp_profiler_get_writer (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
gboolean sp_profiler_get_is_running (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_start (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_stop (SpProfiler *self);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_add_pid (SpProfiler *self,
GPid pid);
SYSPROF_AVAILABLE_IN_ALL
void sp_profiler_remove_pid (SpProfiler *self,
GPid pid);
SYSPROF_AVAILABLE_IN_ALL
const GPid *sp_profiler_get_pids (SpProfiler *self,
guint *n_pids);
G_END_DECLS

View File

@ -1,132 +0,0 @@
/* sp-source.h
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include <glib-object.h>
#include "sp-capture-writer.h"
G_BEGIN_DECLS
#define SP_TYPE_SOURCE (sp_source_get_type())
G_DECLARE_INTERFACE (SpSource, sp_source, SP, SOURCE, GObject)
struct _SpSourceInterface
{
GTypeInterface parent_iface;
/**
* SpSource::get_is_ready:
* @self: A SpSource.
*
* This function should return %TRUE if the source is ready to start
* profiling. If the source is not ready until after sp_source_start() has
* been called, use sp_source_emit_ready() to notify the profiler that the
* source is ready for profiling.
*
* Returns: %TRUE if the source is ready to start profiling.
*/
gboolean (*get_is_ready) (SpSource *self);
/**
* SpSource::set_writer:
* @self: A #SpSource.
* @writer: A #SpCaptureWriter
*
* Sets the #SpCaptureWriter to use when profiling. @writer is only safe to
* use from the main thread. If you need to capture from a thread, you should
* create a memory-based #SpCaptureWriter and then splice that into this
* writer from the main thread when profiling completes.
*
* See sp_capture_writer_splice() for information on splicing writers.
*/
void (*set_writer) (SpSource *self,
SpCaptureWriter *writer);
/**
* SpSource::prepare:
*
* This function is called before profiling has started. The source should
* prepare any pre-profiling setup here. It may perform this work
* asynchronously, but must g_object_notify() the SpSource::is-ready
* property once that asynchronous work has been performed. Until it
* is ready, #SpSource::is-ready must return FALSE.
*/
void (*prepare) (SpSource *self);
/**
* SpSource::add_pid:
* @self: A #SpSource
* @pid: A pid_t > -1
*
* This function is used to notify the #SpSource that a new process,
* identified by @pid, should be profiled. By default, sources should
* assume all processes, and only restrict to a given set of pids if
* this function is called.
*/
void (*add_pid) (SpSource *self,
GPid pid);
/**
* SpSource::start:
* @self: A #SpSource.
*
* Start profiling as configured.
*
* If a failure occurs while processing, the source should notify the
* profiling session via sp_source_emit_failed() from the main thread.
*/
void (*start) (SpSource *self);
/**
* SpSource::stop:
* @self: A #SpSource.
*
* Stop capturing a profile. The source should immediately stop
* profiling and perform any cleanup tasks required. If doing
* off-main-thread capturing, this is a good time to splice your
* capture into the capture file set with sp_source_set_writer().
*
* If you need to perform asynchronous cleanup, call
* sp_source_emit_finished() once that work has completed. If you do
* not need to perform asynchronous cleanup, call
* sp_source_emit_finished() from this function.
*
* sp_source_emit_finished() must be called from the main-thread.
*/
void (*stop) (SpSource *self);
};
void sp_source_add_pid (SpSource *self,
GPid pid);
void sp_source_emit_ready (SpSource *self);
void sp_source_emit_finished (SpSource *self);
void sp_source_emit_failed (SpSource *self,
const GError *error);
gboolean sp_source_get_is_ready (SpSource *self);
void sp_source_prepare (SpSource *self);
void sp_source_set_writer (SpSource *self,
SpCaptureWriter *writer);
void sp_source_start (SpSource *self);
void sp_source_stop (SpSource *self);
G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-callgraph-profile.c /* sysprof-callgraph-profile.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -45,22 +45,22 @@
#include "../stackstash.h" #include "../stackstash.h"
#include "sp-callgraph-profile.h" #include "sysprof-callgraph-profile.h"
#include "sp-capture-reader.h" #include "sysprof-capture-reader.h"
#include "sp-elf-symbol-resolver.h" #include "sysprof-elf-symbol-resolver.h"
#include "sp-jitmap-symbol-resolver.h" #include "sysprof-jitmap-symbol-resolver.h"
#include "sp-kernel-symbol-resolver.h" #include "sysprof-kernel-symbol-resolver.h"
#include "sp-map-lookaside.h" #include "sysprof-map-lookaside.h"
#include "sp-selection.h" #include "sysprof-selection.h"
#define CHECK_CANCELLABLE_INTERVAL 100 #define CHECK_CANCELLABLE_INTERVAL 100
struct _SpCallgraphProfile struct _SysprofCallgraphProfile
{ {
GObject parent_instance; GObject parent_instance;
SpCaptureReader *reader; SysprofCaptureReader *reader;
SpSelection *selection; SysprofSelection *selection;
StackStash *stash; StackStash *stash;
GStringChunk *symbols; GStringChunk *symbols;
GHashTable *tags; GHashTable *tags;
@ -68,14 +68,14 @@ struct _SpCallgraphProfile
typedef struct typedef struct
{ {
SpCaptureReader *reader; SysprofCaptureReader *reader;
SpSelection *selection; SysprofSelection *selection;
} Generate; } Generate;
static void profile_iface_init (SpProfileInterface *iface); static void profile_iface_init (SysprofProfileInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpCallgraphProfile, sp_callgraph_profile, G_TYPE_OBJECT, 0, G_DEFINE_TYPE_EXTENDED (SysprofCallgraphProfile, sysprof_callgraph_profile, G_TYPE_OBJECT, 0,
G_IMPLEMENT_INTERFACE (SP_TYPE_PROFILE, profile_iface_init)) G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_PROFILE, profile_iface_init))
enum { enum {
PROP_0, PROP_0,
@ -85,41 +85,41 @@ enum {
static GParamSpec *properties [N_PROPS]; static GParamSpec *properties [N_PROPS];
SpProfile * SysprofProfile *
sp_callgraph_profile_new (void) sysprof_callgraph_profile_new (void)
{ {
return g_object_new (SP_TYPE_CALLGRAPH_PROFILE, NULL); return g_object_new (SYSPROF_TYPE_CALLGRAPH_PROFILE, NULL);
} }
SpProfile * SysprofProfile *
sp_callgraph_profile_new_with_selection (SpSelection *selection) sysprof_callgraph_profile_new_with_selection (SysprofSelection *selection)
{ {
return g_object_new (SP_TYPE_CALLGRAPH_PROFILE, return g_object_new (SYSPROF_TYPE_CALLGRAPH_PROFILE,
"selection", selection, "selection", selection,
NULL); NULL);
} }
static void static void
sp_callgraph_profile_finalize (GObject *object) sysprof_callgraph_profile_finalize (GObject *object)
{ {
SpCallgraphProfile *self = (SpCallgraphProfile *)object; SysprofCallgraphProfile *self = (SysprofCallgraphProfile *)object;
g_clear_pointer (&self->symbols, g_string_chunk_free); g_clear_pointer (&self->symbols, g_string_chunk_free);
g_clear_pointer (&self->stash, stack_stash_unref); g_clear_pointer (&self->stash, stack_stash_unref);
g_clear_pointer (&self->reader, sp_capture_reader_unref); g_clear_pointer (&self->reader, sysprof_capture_reader_unref);
g_clear_pointer (&self->tags, g_hash_table_unref); g_clear_pointer (&self->tags, g_hash_table_unref);
g_clear_object (&self->selection); g_clear_object (&self->selection);
G_OBJECT_CLASS (sp_callgraph_profile_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_callgraph_profile_parent_class)->finalize (object);
} }
static void static void
sp_callgraph_profile_get_property (GObject *object, sysprof_callgraph_profile_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpCallgraphProfile *self = SP_CALLGRAPH_PROFILE (object); SysprofCallgraphProfile *self = SYSPROF_CALLGRAPH_PROFILE (object);
switch (prop_id) switch (prop_id)
{ {
@ -133,12 +133,12 @@ sp_callgraph_profile_get_property (GObject *object,
} }
static void static void
sp_callgraph_profile_set_property (GObject *object, sysprof_callgraph_profile_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpCallgraphProfile *self = SP_CALLGRAPH_PROFILE (object); SysprofCallgraphProfile *self = SYSPROF_CALLGRAPH_PROFILE (object);
switch (prop_id) switch (prop_id)
{ {
@ -152,51 +152,51 @@ sp_callgraph_profile_set_property (GObject *object,
} }
static void static void
sp_callgraph_profile_class_init (SpCallgraphProfileClass *klass) sysprof_callgraph_profile_class_init (SysprofCallgraphProfileClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_callgraph_profile_finalize; object_class->finalize = sysprof_callgraph_profile_finalize;
object_class->get_property = sp_callgraph_profile_get_property; object_class->get_property = sysprof_callgraph_profile_get_property;
object_class->set_property = sp_callgraph_profile_set_property; object_class->set_property = sysprof_callgraph_profile_set_property;
properties [PROP_SELECTION] = properties [PROP_SELECTION] =
g_param_spec_object ("selection", g_param_spec_object ("selection",
"Selection", "Selection",
"The selection for filtering the callgraph", "The selection for filtering the callgraph",
SP_TYPE_SELECTION, SYSPROF_TYPE_SELECTION,
(G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, N_PROPS, properties); g_object_class_install_properties (object_class, N_PROPS, properties);
} }
static void static void
sp_callgraph_profile_init (SpCallgraphProfile *self) sysprof_callgraph_profile_init (SysprofCallgraphProfile *self)
{ {
self->symbols = g_string_chunk_new (getpagesize ()); self->symbols = g_string_chunk_new (getpagesize ());
self->tags = g_hash_table_new (g_str_hash, g_str_equal); self->tags = g_hash_table_new (g_str_hash, g_str_equal);
} }
static void static void
sp_callgraph_profile_set_reader (SpProfile *profile, sysprof_callgraph_profile_set_reader (SysprofProfile *profile,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpCallgraphProfile *self = (SpCallgraphProfile *)profile; SysprofCallgraphProfile *self = (SysprofCallgraphProfile *)profile;
g_assert (SP_IS_CALLGRAPH_PROFILE (self)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (self));
g_assert (reader != NULL); g_assert (reader != NULL);
g_clear_pointer (&self->reader, sp_capture_reader_unref); g_clear_pointer (&self->reader, sysprof_capture_reader_unref);
self->reader = sp_capture_reader_ref (reader); self->reader = sysprof_capture_reader_ref (reader);
} }
static const gchar * static const gchar *
sp_callgraph_profile_intern_string_take (SpCallgraphProfile *self, sysprof_callgraph_profile_intern_string_take (SysprofCallgraphProfile *self,
gchar *str) gchar *str)
{ {
const gchar *ret; const gchar *ret;
g_assert (SP_IS_CALLGRAPH_PROFILE (self)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (self));
g_assert (str != NULL); g_assert (str != NULL);
ret = g_string_chunk_insert_const (self->symbols, str); ret = g_string_chunk_insert_const (self->symbols, str);
@ -205,30 +205,30 @@ sp_callgraph_profile_intern_string_take (SpCallgraphProfile *self,
} }
static const gchar * static const gchar *
sp_callgraph_profile_intern_string (SpCallgraphProfile *self, sysprof_callgraph_profile_intern_string (SysprofCallgraphProfile *self,
const gchar *str) const gchar *str)
{ {
g_assert (SP_IS_CALLGRAPH_PROFILE (self)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (self));
g_assert (str != NULL); g_assert (str != NULL);
return g_string_chunk_insert_const (self->symbols, str); return g_string_chunk_insert_const (self->symbols, str);
} }
static void static void
sp_callgraph_profile_generate_worker (GTask *task, sysprof_callgraph_profile_generate_worker (GTask *task,
gpointer source_object, gpointer source_object,
gpointer task_data, gpointer task_data,
GCancellable *cancellable) GCancellable *cancellable)
{ {
SpCallgraphProfile *self = source_object; SysprofCallgraphProfile *self = source_object;
Generate *gen = task_data; Generate *gen = task_data;
SpCaptureReader *reader; SysprofCaptureReader *reader;
SpSelection *selection; SysprofSelection *selection;
g_autoptr(GArray) resolved = NULL; g_autoptr(GArray) resolved = NULL;
g_autoptr(GHashTable) maps_by_pid = NULL; g_autoptr(GHashTable) maps_by_pid = NULL;
g_autoptr(GHashTable) cmdlines = NULL; g_autoptr(GHashTable) cmdlines = NULL;
g_autoptr(GPtrArray) resolvers = NULL; g_autoptr(GPtrArray) resolvers = NULL;
SpCaptureFrameType type; SysprofCaptureFrameType type;
StackStash *stash = NULL; StackStash *stash = NULL;
StackStash *resolved_stash = NULL; StackStash *resolved_stash = NULL;
guint count = 0; guint count = 0;
@ -241,26 +241,26 @@ sp_callgraph_profile_generate_worker (GTask *task,
reader = gen->reader; reader = gen->reader;
selection = gen->selection; selection = gen->selection;
maps_by_pid = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)sp_map_lookaside_free); maps_by_pid = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)sysprof_map_lookaside_free);
cmdlines = g_hash_table_new (NULL, NULL); cmdlines = g_hash_table_new (NULL, NULL);
stash = stack_stash_new (NULL); stash = stack_stash_new (NULL);
resolved_stash = stack_stash_new (NULL); resolved_stash = stack_stash_new (NULL);
resolvers = g_ptr_array_new_with_free_func (g_object_unref); resolvers = g_ptr_array_new_with_free_func (g_object_unref);
g_ptr_array_add (resolvers, sp_kernel_symbol_resolver_new ()); g_ptr_array_add (resolvers, sysprof_kernel_symbol_resolver_new ());
g_ptr_array_add (resolvers, sp_elf_symbol_resolver_new ()); g_ptr_array_add (resolvers, sysprof_elf_symbol_resolver_new ());
g_ptr_array_add (resolvers, sp_jitmap_symbol_resolver_new ()); g_ptr_array_add (resolvers, sysprof_jitmap_symbol_resolver_new ());
for (guint j = 0; j < resolvers->len; j++) for (guint j = 0; j < resolvers->len; j++)
{ {
SpSymbolResolver *resolver = g_ptr_array_index (resolvers, j); SysprofSymbolResolver *resolver = g_ptr_array_index (resolvers, j);
sp_capture_reader_reset (reader); sysprof_capture_reader_reset (reader);
sp_symbol_resolver_load (resolver, reader); sysprof_symbol_resolver_load (resolver, reader);
} }
sp_capture_reader_reset (reader); sysprof_capture_reader_reset (reader);
/* /*
* The resolved pointer array is where we stash the names for the * The resolved pointer array is where we stash the names for the
@ -270,31 +270,31 @@ sp_callgraph_profile_generate_worker (GTask *task,
*/ */
resolved = g_array_new (FALSE, TRUE, sizeof (guint64)); resolved = g_array_new (FALSE, TRUE, sizeof (guint64));
while (sp_capture_reader_peek_type (reader, &type)) while (sysprof_capture_reader_peek_type (reader, &type))
{ {
const SpCaptureProcess *pr; const SysprofCaptureProcess *pr;
const gchar *cmdline; const gchar *cmdline;
if (type != SP_CAPTURE_FRAME_PROCESS) if (type != SYSPROF_CAPTURE_FRAME_PROCESS)
{ {
if (!sp_capture_reader_skip (reader)) if (!sysprof_capture_reader_skip (reader))
goto failure; goto failure;
continue; continue;
} }
if (NULL == (pr = sp_capture_reader_read_process (reader))) if (NULL == (pr = sysprof_capture_reader_read_process (reader)))
goto failure; goto failure;
cmdline = g_strdup_printf ("[%s]", pr->cmdline); cmdline = g_strdup_printf ("[%s]", pr->cmdline);
g_hash_table_insert (cmdlines, g_hash_table_insert (cmdlines,
GINT_TO_POINTER (pr->frame.pid), GINT_TO_POINTER (pr->frame.pid),
(gchar *)sp_callgraph_profile_intern_string (self, cmdline)); (gchar *)sysprof_callgraph_profile_intern_string (self, cmdline));
} }
if (g_task_return_error_if_cancelled (task)) if (g_task_return_error_if_cancelled (task))
goto cleanup; goto cleanup;
sp_capture_reader_reset (reader); sysprof_capture_reader_reset (reader);
/* /*
* Walk through all of the sample events and resolve instruction-pointers * Walk through all of the sample events and resolve instruction-pointers
@ -302,18 +302,18 @@ sp_callgraph_profile_generate_worker (GTask *task,
* name. If we wanted to support dynamic systems, we'd want to extend this * name. If we wanted to support dynamic systems, we'd want to extend this
* to parse information from captured data about the languages jit'd code. * to parse information from captured data about the languages jit'd code.
*/ */
while (sp_capture_reader_peek_type (reader, &type)) while (sysprof_capture_reader_peek_type (reader, &type))
{ {
SpAddressContext last_context = SP_ADDRESS_CONTEXT_NONE; SysprofAddressContext last_context = SYSPROF_ADDRESS_CONTEXT_NONE;
const SpCaptureSample *sample; const SysprofCaptureSample *sample;
StackNode *node; StackNode *node;
StackNode *iter; StackNode *iter;
const gchar *cmdline; const gchar *cmdline;
guint len = 5; guint len = 5;
if (type != SP_CAPTURE_FRAME_SAMPLE) if (type != SYSPROF_CAPTURE_FRAME_SAMPLE)
{ {
if (!sp_capture_reader_skip (reader)) if (!sysprof_capture_reader_skip (reader))
goto failure; goto failure;
continue; continue;
} }
@ -324,10 +324,10 @@ sp_callgraph_profile_generate_worker (GTask *task,
goto cleanup; goto cleanup;
} }
if (NULL == (sample = sp_capture_reader_read_sample (reader))) if (NULL == (sample = sysprof_capture_reader_read_sample (reader)))
goto failure; goto failure;
if (!sp_selection_contains (selection, sample->frame.time)) if (!sysprof_selection_contains (selection, sample->frame.time))
continue; continue;
if (sample->n_addrs == 0) if (sample->n_addrs == 0)
@ -340,8 +340,8 @@ sp_callgraph_profile_generate_worker (GTask *task,
* untrusted data from capture files, it's not safe to assume. But in * untrusted data from capture files, it's not safe to assume. But in
* practice it is. * practice it is.
*/ */
g_assert (sp_address_is_context_switch (sample->addrs[0], &last_context)); g_assert (sysprof_address_is_context_switch (sample->addrs[0], &last_context));
last_context = SP_ADDRESS_CONTEXT_NONE; last_context = SYSPROF_ADDRESS_CONTEXT_NONE;
#endif #endif
node = stack_stash_add_trace (stash, (gpointer)sample->addrs, sample->n_addrs, 1); node = stack_stash_add_trace (stash, (gpointer)sample->addrs, sample->n_addrs, 1);
@ -356,14 +356,14 @@ sp_callgraph_profile_generate_worker (GTask *task,
for (iter = node; iter != NULL; iter = iter->parent) for (iter = node; iter != NULL; iter = iter->parent)
{ {
SpAddressContext context = SP_ADDRESS_CONTEXT_NONE; SysprofAddressContext context = SYSPROF_ADDRESS_CONTEXT_NONE;
SpAddress address = iter->data; SysprofAddress address = iter->data;
const gchar *symbol = NULL; const gchar *symbol = NULL;
if (sp_address_is_context_switch (address, &context)) if (sysprof_address_is_context_switch (address, &context))
{ {
if (last_context) if (last_context)
symbol = sp_address_context_to_string (last_context); symbol = sysprof_address_context_to_string (last_context);
else else
symbol = NULL; symbol = NULL;
@ -373,11 +373,11 @@ sp_callgraph_profile_generate_worker (GTask *task,
{ {
for (guint j = 0; j < resolvers->len; j++) for (guint j = 0; j < resolvers->len; j++)
{ {
SpSymbolResolver *resolver = g_ptr_array_index (resolvers, j); SysprofSymbolResolver *resolver = g_ptr_array_index (resolvers, j);
GQuark tag = 0; GQuark tag = 0;
gchar *str; gchar *str;
str = sp_symbol_resolver_resolve_with_context (resolver, str = sysprof_symbol_resolver_resolve_with_context (resolver,
sample->frame.time, sample->frame.time,
sample->frame.pid, sample->frame.pid,
last_context, last_context,
@ -386,7 +386,7 @@ sp_callgraph_profile_generate_worker (GTask *task,
if (str != NULL) if (str != NULL)
{ {
symbol = sp_callgraph_profile_intern_string_take (self, str); symbol = sysprof_callgraph_profile_intern_string_take (self, str);
if (tag != 0) if (tag != 0)
g_hash_table_insert (self->tags, (gchar *)symbol, GSIZE_TO_POINTER (tag)); g_hash_table_insert (self->tags, (gchar *)symbol, GSIZE_TO_POINTER (tag));
break; break;
@ -395,18 +395,18 @@ sp_callgraph_profile_generate_worker (GTask *task,
} }
if (symbol != NULL) if (symbol != NULL)
g_array_index (resolved, SpAddress, len++) = POINTER_TO_U64 (symbol); g_array_index (resolved, SysprofAddress, len++) = POINTER_TO_U64 (symbol);
} }
if (last_context && last_context != SP_ADDRESS_CONTEXT_USER) if (last_context && last_context != SYSPROF_ADDRESS_CONTEXT_USER)
{ {
/* Kernel threads do not have a user part, so we end up here /* Kernel threads do not have a user part, so we end up here
* without ever getting a user context. If this happens, * without ever getting a user context. If this happens,
* add the '- - kernel - - ' name, so that kernel threads * add the '- - kernel - - ' name, so that kernel threads
* are properly blamed on the kernel * are properly blamed on the kernel
*/ */
const gchar *name = sp_address_context_to_string (last_context); const gchar *name = sysprof_address_context_to_string (last_context);
g_array_index (resolved, SpAddress, len++) = POINTER_TO_U64 (name); g_array_index (resolved, SysprofAddress, len++) = POINTER_TO_U64 (name);
} }
if (cmdline != NULL) if (cmdline != NULL)
@ -438,43 +438,43 @@ cleanup:
static void static void
generate_free (Generate *generate) generate_free (Generate *generate)
{ {
sp_capture_reader_unref (generate->reader); sysprof_capture_reader_unref (generate->reader);
g_clear_object (&generate->selection); g_clear_object (&generate->selection);
g_slice_free (Generate, generate); g_slice_free (Generate, generate);
} }
static void static void
sp_callgraph_profile_generate (SpProfile *profile, sysprof_callgraph_profile_generate (SysprofProfile *profile,
GCancellable *cancellable, GCancellable *cancellable,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
SpCallgraphProfile *self = (SpCallgraphProfile *)profile; SysprofCallgraphProfile *self = (SysprofCallgraphProfile *)profile;
Generate *gen; Generate *gen;
g_autoptr(GTask) task = NULL; g_autoptr(GTask) task = NULL;
g_assert (SP_IS_CALLGRAPH_PROFILE (self)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (self));
g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
gen = g_slice_new0 (Generate); gen = g_slice_new0 (Generate);
gen->reader = sp_capture_reader_copy (self->reader); gen->reader = sysprof_capture_reader_copy (self->reader);
gen->selection = sp_selection_copy (self->selection); gen->selection = sysprof_selection_copy (self->selection);
task = g_task_new (self, cancellable, callback, user_data); task = g_task_new (self, cancellable, callback, user_data);
g_task_set_task_data (task, gen, (GDestroyNotify)generate_free); g_task_set_task_data (task, gen, (GDestroyNotify)generate_free);
g_task_run_in_thread (task, sp_callgraph_profile_generate_worker); g_task_run_in_thread (task, sysprof_callgraph_profile_generate_worker);
} }
static gboolean static gboolean
sp_callgraph_profile_generate_finish (SpProfile *profile, sysprof_callgraph_profile_generate_finish (SysprofProfile *profile,
GAsyncResult *result, GAsyncResult *result,
GError **error) GError **error)
{ {
SpCallgraphProfile *self = (SpCallgraphProfile *)profile; SysprofCallgraphProfile *self = (SysprofCallgraphProfile *)profile;
StackStash *stash; StackStash *stash;
g_assert (SP_IS_CALLGRAPH_PROFILE (self)); g_assert (SYSPROF_IS_CALLGRAPH_PROFILE (self));
g_assert (G_IS_TASK (result)); g_assert (G_IS_TASK (result));
stash = g_task_propagate_pointer (G_TASK (result), error); stash = g_task_propagate_pointer (G_TASK (result), error);
@ -496,26 +496,26 @@ sp_callgraph_profile_generate_finish (SpProfile *profile,
} }
static void static void
profile_iface_init (SpProfileInterface *iface) profile_iface_init (SysprofProfileInterface *iface)
{ {
iface->generate = sp_callgraph_profile_generate; iface->generate = sysprof_callgraph_profile_generate;
iface->generate_finish = sp_callgraph_profile_generate_finish; iface->generate_finish = sysprof_callgraph_profile_generate_finish;
iface->set_reader = sp_callgraph_profile_set_reader; iface->set_reader = sysprof_callgraph_profile_set_reader;
} }
gpointer gpointer
sp_callgraph_profile_get_stash (SpCallgraphProfile *self) sysprof_callgraph_profile_get_stash (SysprofCallgraphProfile *self)
{ {
g_return_val_if_fail (SP_IS_CALLGRAPH_PROFILE (self), NULL); g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_PROFILE (self), NULL);
return self->stash; return self->stash;
} }
GQuark GQuark
sp_callgraph_profile_get_tag (SpCallgraphProfile *self, sysprof_callgraph_profile_get_tag (SysprofCallgraphProfile *self,
const gchar *symbol) const gchar *symbol)
{ {
g_return_val_if_fail (SP_IS_CALLGRAPH_PROFILE (self), 0); g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_PROFILE (self), 0);
return GPOINTER_TO_SIZE (g_hash_table_lookup (self->tags, symbol)); return GPOINTER_TO_SIZE (g_hash_table_lookup (self->tags, symbol));
} }

View File

@ -1,4 +1,4 @@
/* sp-callgraph-profile.h /* sysprof-callgraph-profile.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,24 +22,24 @@
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
#include "sp-profile.h" #include "sysprof-profile.h"
#include "sp-selection.h" #include "sysprof-selection.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_CALLGRAPH_PROFILE (sp_callgraph_profile_get_type()) #define SYSPROF_TYPE_CALLGRAPH_PROFILE (sysprof_callgraph_profile_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SpCallgraphProfile, sp_callgraph_profile, SP, CALLGRAPH_PROFILE, GObject) G_DECLARE_FINAL_TYPE (SysprofCallgraphProfile, sysprof_callgraph_profile, SYSPROF, CALLGRAPH_PROFILE, GObject)
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpProfile *sp_callgraph_profile_new (void); SysprofProfile *sysprof_callgraph_profile_new (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpProfile *sp_callgraph_profile_new_with_selection (SpSelection *selection); SysprofProfile *sysprof_callgraph_profile_new_with_selection (SysprofSelection *selection);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gpointer sp_callgraph_profile_get_stash (SpCallgraphProfile *self); gpointer sysprof_callgraph_profile_get_stash (SysprofCallgraphProfile *self);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GQuark sp_callgraph_profile_get_tag (SpCallgraphProfile *self, GQuark sysprof_callgraph_profile_get_tag (SysprofCallgraphProfile *self,
const gchar *symbol); const gchar *symbol);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-capture-gobject.c /* sysprof-capture-gobject.c
* *
* Copyright 2019 Christian Hergert <chergert@redhat.com> * Copyright 2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,10 +20,10 @@
#include "config.h" #include "config.h"
#include "sp-capture-gobject.h" #include "sysprof-capture-gobject.h"
#include <sysprof-capture.h> #include <sysprof-capture.h>
G_DEFINE_BOXED_TYPE (SpCaptureReader, sp_capture_reader, (GBoxedCopyFunc)sp_capture_reader_ref, (GBoxedFreeFunc)sp_capture_reader_unref) G_DEFINE_BOXED_TYPE (SysprofCaptureReader, sysprof_capture_reader, (GBoxedCopyFunc)sysprof_capture_reader_ref, (GBoxedFreeFunc)sysprof_capture_reader_unref)
G_DEFINE_BOXED_TYPE (SpCaptureWriter, sp_capture_writer, (GBoxedCopyFunc)sp_capture_writer_ref, (GBoxedFreeFunc)sp_capture_writer_unref) G_DEFINE_BOXED_TYPE (SysprofCaptureWriter, sysprof_capture_writer, (GBoxedCopyFunc)sysprof_capture_writer_ref, (GBoxedFreeFunc)sysprof_capture_writer_unref)
G_DEFINE_BOXED_TYPE (SpCaptureCursor, sp_capture_cursor, (GBoxedCopyFunc)sp_capture_cursor_ref, (GBoxedFreeFunc)sp_capture_cursor_unref) G_DEFINE_BOXED_TYPE (SysprofCaptureCursor, sysprof_capture_cursor, (GBoxedCopyFunc)sysprof_capture_cursor_ref, (GBoxedFreeFunc)sysprof_capture_cursor_unref)

View File

@ -1,4 +1,4 @@
/* sp-capture-gobject.h /* sysprof-capture-gobject.h
* *
* Copyright 2019 Christian Hergert <chergert@redhat.com> * Copyright 2019 Christian Hergert <chergert@redhat.com>
* *
@ -26,15 +26,15 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_CAPTURE_READER (sp_capture_reader_get_type()) #define SYSPROF_TYPE_CAPTURE_READER (sysprof_capture_reader_get_type())
#define SP_TYPE_CAPTURE_WRITER (sp_capture_writer_get_type()) #define SYSPROF_TYPE_CAPTURE_WRITER (sysprof_capture_writer_get_type())
#define SP_TYPE_CAPTURE_CURSOR (sp_capture_cursor_get_type()) #define SYSPROF_TYPE_CAPTURE_CURSOR (sysprof_capture_cursor_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GType sp_capture_reader_get_type (void); GType sysprof_capture_reader_get_type (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GType sp_capture_writer_get_type (void); GType sysprof_capture_writer_get_type (void);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
GType sp_capture_cursor_get_type (void); GType sysprof_capture_cursor_get_type (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-elf-symbol-resolver.c /* sysprof-elf-symbol-resolver.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -24,10 +24,10 @@
#include "binfile.h" #include "binfile.h"
#include "elfparser.h" #include "elfparser.h"
#include "sp-elf-symbol-resolver.h" #include "sysprof-elf-symbol-resolver.h"
#include "sp-map-lookaside.h" #include "sysprof-map-lookaside.h"
struct _SpElfSymbolResolver struct _SysprofElfSymbolResolver
{ {
GObject parent_instance; GObject parent_instance;
@ -36,42 +36,42 @@ struct _SpElfSymbolResolver
GHashTable *tag_cache; GHashTable *tag_cache;
}; };
static void symbol_resolver_iface_init (SpSymbolResolverInterface *iface); static void symbol_resolver_iface_init (SysprofSymbolResolverInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpElfSymbolResolver, G_DEFINE_TYPE_EXTENDED (SysprofElfSymbolResolver,
sp_elf_symbol_resolver, sysprof_elf_symbol_resolver,
G_TYPE_OBJECT, G_TYPE_OBJECT,
0, 0,
G_IMPLEMENT_INTERFACE (SP_TYPE_SYMBOL_RESOLVER, G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SYMBOL_RESOLVER,
symbol_resolver_iface_init)) symbol_resolver_iface_init))
static void static void
sp_elf_symbol_resolver_finalize (GObject *object) sysprof_elf_symbol_resolver_finalize (GObject *object)
{ {
SpElfSymbolResolver *self = (SpElfSymbolResolver *)object; SysprofElfSymbolResolver *self = (SysprofElfSymbolResolver *)object;
g_clear_pointer (&self->bin_files, g_hash_table_unref); g_clear_pointer (&self->bin_files, g_hash_table_unref);
g_clear_pointer (&self->lookasides, g_hash_table_unref); g_clear_pointer (&self->lookasides, g_hash_table_unref);
g_clear_pointer (&self->tag_cache, g_hash_table_unref); g_clear_pointer (&self->tag_cache, g_hash_table_unref);
G_OBJECT_CLASS (sp_elf_symbol_resolver_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_elf_symbol_resolver_parent_class)->finalize (object);
} }
static void static void
sp_elf_symbol_resolver_class_init (SpElfSymbolResolverClass *klass) sysprof_elf_symbol_resolver_class_init (SysprofElfSymbolResolverClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_elf_symbol_resolver_finalize; object_class->finalize = sysprof_elf_symbol_resolver_finalize;
} }
static void static void
sp_elf_symbol_resolver_init (SpElfSymbolResolver *self) sysprof_elf_symbol_resolver_init (SysprofElfSymbolResolver *self)
{ {
self->lookasides = g_hash_table_new_full (NULL, self->lookasides = g_hash_table_new_full (NULL,
NULL, NULL,
NULL, NULL,
(GDestroyNotify)sp_map_lookaside_free); (GDestroyNotify)sysprof_map_lookaside_free);
self->bin_files = g_hash_table_new_full (g_str_hash, self->bin_files = g_hash_table_new_full (g_str_hash,
g_str_equal, g_str_equal,
@ -82,31 +82,31 @@ sp_elf_symbol_resolver_init (SpElfSymbolResolver *self)
} }
static void static void
sp_elf_symbol_resolver_load (SpSymbolResolver *resolver, sysprof_elf_symbol_resolver_load (SysprofSymbolResolver *resolver,
SpCaptureReader *reader) SysprofCaptureReader *reader)
{ {
SpElfSymbolResolver *self = (SpElfSymbolResolver *)resolver; SysprofElfSymbolResolver *self = (SysprofElfSymbolResolver *)resolver;
SpCaptureFrameType type; SysprofCaptureFrameType type;
g_assert (SP_IS_SYMBOL_RESOLVER (resolver)); g_assert (SYSPROF_IS_SYMBOL_RESOLVER (resolver));
g_assert (reader != NULL); g_assert (reader != NULL);
sp_capture_reader_reset (reader); sysprof_capture_reader_reset (reader);
while (sp_capture_reader_peek_type (reader, &type)) while (sysprof_capture_reader_peek_type (reader, &type))
{ {
const SpCaptureMap *ev; const SysprofCaptureMap *ev;
SpMapLookaside *lookaside; SysprofMapLookaside *lookaside;
SpMap map; SysprofMap map;
if (type != SP_CAPTURE_FRAME_MAP) if (type != SYSPROF_CAPTURE_FRAME_MAP)
{ {
if (!sp_capture_reader_skip (reader)) if (!sysprof_capture_reader_skip (reader))
return; return;
continue; continue;
} }
ev = sp_capture_reader_read_map (reader); ev = sysprof_capture_reader_read_map (reader);
map.start = ev->start; map.start = ev->start;
map.end = ev->end; map.end = ev->end;
@ -118,21 +118,21 @@ sp_elf_symbol_resolver_load (SpSymbolResolver *resolver,
if (lookaside == NULL) if (lookaside == NULL)
{ {
lookaside = sp_map_lookaside_new (); lookaside = sysprof_map_lookaside_new ();
g_hash_table_insert (self->lookasides, GINT_TO_POINTER (ev->frame.pid), lookaside); g_hash_table_insert (self->lookasides, GINT_TO_POINTER (ev->frame.pid), lookaside);
} }
sp_map_lookaside_insert (lookaside, &map); sysprof_map_lookaside_insert (lookaside, &map);
} }
} }
static bin_file_t * static bin_file_t *
sp_elf_symbol_resolver_get_bin_file (SpElfSymbolResolver *self, sysprof_elf_symbol_resolver_get_bin_file (SysprofElfSymbolResolver *self,
const gchar *filename) const gchar *filename)
{ {
bin_file_t *bin_file; bin_file_t *bin_file;
g_assert (SP_IS_ELF_SYMBOL_RESOLVER (self)); g_assert (SYSPROF_IS_ELF_SYMBOL_RESOLVER (self));
bin_file = g_hash_table_lookup (self->bin_files, filename); bin_file = g_hash_table_lookup (self->bin_files, filename);
@ -141,7 +141,7 @@ sp_elf_symbol_resolver_get_bin_file (SpElfSymbolResolver *self,
const gchar *alternate = filename; const gchar *alternate = filename;
/* /*
* If we are in a new mount namespace, then rely on the sp_symbol_dirs * If we are in a new mount namespace, then rely on the sysprof_symbol_dirs
* to find us a locate to resolve the file where the CRC will match. * to find us a locate to resolve the file where the CRC will match.
* *
* TODO: We need to translate the path here so that we can locate the * TODO: We need to translate the path here so that we can locate the
@ -159,8 +159,8 @@ sp_elf_symbol_resolver_get_bin_file (SpElfSymbolResolver *self,
} }
static GQuark static GQuark
guess_tag (SpElfSymbolResolver *self, guess_tag (SysprofElfSymbolResolver *self,
const SpMap *map) const SysprofMap *map)
{ {
g_assert (map != NULL); g_assert (map != NULL);
g_assert (map->filename != NULL); g_assert (map->filename != NULL);
@ -254,37 +254,37 @@ guess_tag (SpElfSymbolResolver *self,
} }
static gchar * static gchar *
sp_elf_symbol_resolver_resolve_with_context (SpSymbolResolver *resolver, sysprof_elf_symbol_resolver_resolve_with_context (SysprofSymbolResolver *resolver,
guint64 time, guint64 time,
GPid pid, GPid pid,
SpAddressContext context, SysprofAddressContext context,
SpCaptureAddress address, SysprofCaptureAddress address,
GQuark *tag) GQuark *tag)
{ {
SpElfSymbolResolver *self = (SpElfSymbolResolver *)resolver; SysprofElfSymbolResolver *self = (SysprofElfSymbolResolver *)resolver;
const bin_symbol_t *bin_sym; const bin_symbol_t *bin_sym;
SpMapLookaside *lookaside; SysprofMapLookaside *lookaside;
const gchar *bin_sym_name; const gchar *bin_sym_name;
const SpMap *map; const SysprofMap *map;
bin_file_t *bin_file; bin_file_t *bin_file;
g_assert (SP_IS_ELF_SYMBOL_RESOLVER (self)); g_assert (SYSPROF_IS_ELF_SYMBOL_RESOLVER (self));
if (context != SP_ADDRESS_CONTEXT_USER) if (context != SYSPROF_ADDRESS_CONTEXT_USER)
return NULL; return NULL;
lookaside = g_hash_table_lookup (self->lookasides, GINT_TO_POINTER (pid)); lookaside = g_hash_table_lookup (self->lookasides, GINT_TO_POINTER (pid));
if (lookaside == NULL) if (lookaside == NULL)
return NULL; return NULL;
map = sp_map_lookaside_lookup (lookaside, address); map = sysprof_map_lookaside_lookup (lookaside, address);
if (map == NULL) if (map == NULL)
return NULL; return NULL;
address -= map->start; address -= map->start;
address += map->offset; address += map->offset;
bin_file = sp_elf_symbol_resolver_get_bin_file (self, map->filename); bin_file = sysprof_elf_symbol_resolver_get_bin_file (self, map->filename);
g_assert (bin_file != NULL); g_assert (bin_file != NULL);
@ -301,14 +301,14 @@ sp_elf_symbol_resolver_resolve_with_context (SpSymbolResolver *resolver,
} }
static void static void
symbol_resolver_iface_init (SpSymbolResolverInterface *iface) symbol_resolver_iface_init (SysprofSymbolResolverInterface *iface)
{ {
iface->load = sp_elf_symbol_resolver_load; iface->load = sysprof_elf_symbol_resolver_load;
iface->resolve_with_context = sp_elf_symbol_resolver_resolve_with_context; iface->resolve_with_context = sysprof_elf_symbol_resolver_resolve_with_context;
} }
SpSymbolResolver * SysprofSymbolResolver *
sp_elf_symbol_resolver_new (void) sysprof_elf_symbol_resolver_new (void)
{ {
return g_object_new (SP_TYPE_ELF_SYMBOL_RESOLVER, NULL); return g_object_new (SYSPROF_TYPE_ELF_SYMBOL_RESOLVER, NULL);
} }

View File

@ -1,4 +1,4 @@
/* sp-elf-symbol-resolver.h /* sysprof-elf-symbol-resolver.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,16 +22,16 @@
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
#include "sp-symbol-resolver.h" #include "sysprof-symbol-resolver.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_ELF_SYMBOL_RESOLVER (sp_elf_symbol_resolver_get_type()) #define SYSPROF_TYPE_ELF_SYMBOL_RESOLVER (sysprof_elf_symbol_resolver_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SpElfSymbolResolver, sp_elf_symbol_resolver, SP, ELF_SYMBOL_RESOLVER, GObject) G_DECLARE_FINAL_TYPE (SysprofElfSymbolResolver, sysprof_elf_symbol_resolver, SYSPROF, ELF_SYMBOL_RESOLVER, GObject)
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpSymbolResolver *sp_elf_symbol_resolver_new (void); SysprofSymbolResolver *sysprof_elf_symbol_resolver_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-gjs-source.c /* sysprof-gjs-source.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -23,14 +23,14 @@
#include <signal.h> #include <signal.h>
#include <string.h> #include <string.h>
#include "sp-capture-reader.h" #include "sysprof-capture-reader.h"
#include "sp-gjs-source.h" #include "sysprof-gjs-source.h"
struct _SpGjsSource struct _SysprofGjsSource
{ {
GObject parent_instance; GObject parent_instance;
SpCaptureWriter *writer; SysprofCaptureWriter *writer;
GArray *pids; GArray *pids;
GArray *enabled; GArray *enabled;
}; };
@ -38,57 +38,57 @@ struct _SpGjsSource
#define ENABLE_PROFILER 0x1 #define ENABLE_PROFILER 0x1
#define DISABLE_PROFILER 0x0 #define DISABLE_PROFILER 0x0
static void source_iface_init (SpSourceInterface *iface); static void source_iface_init (SysprofSourceInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpGjsSource, sp_gjs_source, G_TYPE_OBJECT, 0, G_DEFINE_TYPE_EXTENDED (SysprofGjsSource, sysprof_gjs_source, G_TYPE_OBJECT, 0,
G_IMPLEMENT_INTERFACE (SP_TYPE_SOURCE, source_iface_init)) G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SOURCE, source_iface_init))
static void static void
sp_gjs_source_finalize (GObject *object) sysprof_gjs_source_finalize (GObject *object)
{ {
SpGjsSource *self = (SpGjsSource *)object; SysprofGjsSource *self = (SysprofGjsSource *)object;
g_clear_pointer (&self->pids, g_array_unref); g_clear_pointer (&self->pids, g_array_unref);
g_clear_pointer (&self->enabled, g_array_unref); g_clear_pointer (&self->enabled, g_array_unref);
g_clear_pointer (&self->writer, sp_capture_writer_unref); g_clear_pointer (&self->writer, sysprof_capture_writer_unref);
G_OBJECT_CLASS (sp_gjs_source_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_gjs_source_parent_class)->finalize (object);
} }
static void static void
sp_gjs_source_class_init (SpGjsSourceClass *klass) sysprof_gjs_source_class_init (SysprofGjsSourceClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_gjs_source_finalize; object_class->finalize = sysprof_gjs_source_finalize;
} }
static void static void
sp_gjs_source_init (SpGjsSource *self) sysprof_gjs_source_init (SysprofGjsSource *self)
{ {
self->pids = g_array_new (FALSE, FALSE, sizeof (GPid)); self->pids = g_array_new (FALSE, FALSE, sizeof (GPid));
self->enabled = g_array_new (FALSE, FALSE, sizeof (GPid)); self->enabled = g_array_new (FALSE, FALSE, sizeof (GPid));
} }
static void static void
sp_gjs_source_process_capture (SpGjsSource *self, sysprof_gjs_source_process_capture (SysprofGjsSource *self,
GPid pid, GPid pid,
const gchar *path) const gchar *path)
{ {
g_autoptr(GError) error = NULL; g_autoptr(GError) error = NULL;
g_autoptr(SpCaptureReader) reader = NULL; g_autoptr(SysprofCaptureReader) reader = NULL;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
g_assert (self->writer != NULL); g_assert (self->writer != NULL);
g_assert (path != NULL); g_assert (path != NULL);
if (!(reader = sp_capture_reader_new (path, &error))) if (!(reader = sysprof_capture_reader_new (path, &error)))
{ {
g_warning ("Failed to load capture: %s", error->message); g_warning ("Failed to load capture: %s", error->message);
return; return;
} }
if (!sp_capture_reader_splice (reader, self->writer, &error)) if (!sysprof_capture_reader_splice (reader, self->writer, &error))
{ {
g_warning ("Failed to load capture: %s", error->message); g_warning ("Failed to load capture: %s", error->message);
return; return;
@ -96,11 +96,11 @@ sp_gjs_source_process_capture (SpGjsSource *self,
} }
static void static void
sp_gjs_source_process_captures (SpGjsSource *self) sysprof_gjs_source_process_captures (SysprofGjsSource *self)
{ {
guint i; guint i;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
g_assert (self->writer != NULL); g_assert (self->writer != NULL);
for (i = 0; i < self->enabled->len; i++) for (i = 0; i < self->enabled->len; i++)
@ -112,20 +112,20 @@ sp_gjs_source_process_captures (SpGjsSource *self)
filename = g_strdup_printf ("gjs-profile-%u", (guint)pid); filename = g_strdup_printf ("gjs-profile-%u", (guint)pid);
path = g_build_filename (g_get_tmp_dir (), filename, NULL); path = g_build_filename (g_get_tmp_dir (), filename, NULL);
sp_gjs_source_process_capture (self, pid, path); sysprof_gjs_source_process_capture (self, pid, path);
} }
} }
static void static void
sp_gjs_source_set_writer (SpSource *source, sysprof_gjs_source_set_writer (SysprofSource *source,
SpCaptureWriter *writer) SysprofCaptureWriter *writer)
{ {
SpGjsSource *self = (SpGjsSource *)source; SysprofGjsSource *self = (SysprofGjsSource *)source;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
g_assert (writer != NULL); g_assert (writer != NULL);
self->writer = sp_capture_writer_ref (writer); self->writer = sysprof_capture_writer_ref (writer);
} }
static gboolean static gboolean
@ -154,12 +154,12 @@ pid_is_profileable (GPid pid)
} }
static void static void
sp_gjs_source_enable_pid (SpGjsSource *self, sysprof_gjs_source_enable_pid (SysprofGjsSource *self,
GPid pid) GPid pid)
{ {
union sigval si; union sigval si;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
g_assert (pid != -1); g_assert (pid != -1);
si.sival_int = ENABLE_PROFILER; si.sival_int = ENABLE_PROFILER;
@ -171,12 +171,12 @@ sp_gjs_source_enable_pid (SpGjsSource *self,
} }
static void static void
sp_gjs_source_disable_pid (SpGjsSource *self, sysprof_gjs_source_disable_pid (SysprofGjsSource *self,
GPid pid) GPid pid)
{ {
union sigval si; union sigval si;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
g_assert (pid != -1); g_assert (pid != -1);
si.sival_int = DISABLE_PROFILER; si.sival_int = DISABLE_PROFILER;
@ -186,64 +186,64 @@ sp_gjs_source_disable_pid (SpGjsSource *self,
} }
static void static void
sp_gjs_source_start (SpSource *source) sysprof_gjs_source_start (SysprofSource *source)
{ {
SpGjsSource *self = (SpGjsSource *)source; SysprofGjsSource *self = (SysprofGjsSource *)source;
guint i; guint i;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
for (i = 0; i < self->pids->len; i++) for (i = 0; i < self->pids->len; i++)
{ {
GPid pid = g_array_index (self->pids, GPid, i); GPid pid = g_array_index (self->pids, GPid, i);
if (pid_is_profileable (pid)) if (pid_is_profileable (pid))
sp_gjs_source_enable_pid (self, pid); sysprof_gjs_source_enable_pid (self, pid);
} }
} }
static void static void
sp_gjs_source_stop (SpSource *source) sysprof_gjs_source_stop (SysprofSource *source)
{ {
SpGjsSource *self = (SpGjsSource *)source; SysprofGjsSource *self = (SysprofGjsSource *)source;
guint i; guint i;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
for (i = 0; i < self->pids->len; i++) for (i = 0; i < self->pids->len; i++)
{ {
GPid pid = g_array_index (self->pids, GPid, i); GPid pid = g_array_index (self->pids, GPid, i);
if (pid_is_profileable (pid)) if (pid_is_profileable (pid))
sp_gjs_source_disable_pid (self, pid); sysprof_gjs_source_disable_pid (self, pid);
} }
sp_gjs_source_process_captures (self); sysprof_gjs_source_process_captures (self);
} }
static void static void
sp_gjs_source_add_pid (SpSource *source, sysprof_gjs_source_add_pid (SysprofSource *source,
GPid pid) GPid pid)
{ {
SpGjsSource *self = (SpGjsSource *)source; SysprofGjsSource *self = (SysprofGjsSource *)source;
g_assert (SP_IS_GJS_SOURCE (self)); g_assert (SYSPROF_IS_GJS_SOURCE (self));
g_assert (pid > -1); g_assert (pid > -1);
g_array_append_val (self->pids, pid); g_array_append_val (self->pids, pid);
} }
static void static void
source_iface_init (SpSourceInterface *iface) source_iface_init (SysprofSourceInterface *iface)
{ {
iface->set_writer = sp_gjs_source_set_writer; iface->set_writer = sysprof_gjs_source_set_writer;
iface->start = sp_gjs_source_start; iface->start = sysprof_gjs_source_start;
iface->stop = sp_gjs_source_stop; iface->stop = sysprof_gjs_source_stop;
iface->add_pid = sp_gjs_source_add_pid; iface->add_pid = sysprof_gjs_source_add_pid;
} }
SpSource * SysprofSource *
sp_gjs_source_new (void) sysprof_gjs_source_new (void)
{ {
return g_object_new (SP_TYPE_GJS_SOURCE, NULL); return g_object_new (SYSPROF_TYPE_GJS_SOURCE, NULL);
} }

View File

@ -1,4 +1,4 @@
/* sp-gjs-source.h /* sysprof-gjs-source.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,14 +20,14 @@
#pragma once #pragma once
#include "sp-source.h" #include "sysprof-source.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_GJS_SOURCE (sp_gjs_source_get_type()) #define SYSPROF_TYPE_GJS_SOURCE (sysprof_gjs_source_get_type())
G_DECLARE_FINAL_TYPE (SpGjsSource, sp_gjs_source, SP, GJS_SOURCE, GObject) G_DECLARE_FINAL_TYPE (SysprofGjsSource, sysprof_gjs_source, SYSPROF, GJS_SOURCE, GObject)
SpSource *sp_gjs_source_new (void); SysprofSource *sysprof_gjs_source_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-hostinfo-source.c /* sysprof-hostinfo-source.c
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -27,11 +27,11 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <unistd.h> #include <unistd.h>
#include "sp-hostinfo-source.h" #include "sysprof-hostinfo-source.h"
#define PROC_STAT_BUF_SIZE 4096 #define PROC_STAT_BUF_SIZE 4096
struct _SpHostinfoSource struct _SysprofHostinfoSource
{ {
GObject parent_instance; GObject parent_instance;
@ -39,7 +39,7 @@ struct _SpHostinfoSource
gint n_cpu; gint n_cpu;
gint stat_fd; gint stat_fd;
SpCaptureWriter *writer; SysprofCaptureWriter *writer;
GArray *cpu_info; GArray *cpu_info;
gchar *stat_buf; gchar *stat_buf;
}; };
@ -61,19 +61,19 @@ typedef struct
glong last_guest_nice; glong last_guest_nice;
} CpuInfo; } CpuInfo;
static void source_iface_init (SpSourceInterface *iface); static void source_iface_init (SysprofSourceInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpHostinfoSource, sp_hostinfo_source, G_TYPE_OBJECT, 0, G_DEFINE_TYPE_EXTENDED (SysprofHostinfoSource, sysprof_hostinfo_source, G_TYPE_OBJECT, 0,
G_IMPLEMENT_INTERFACE (SP_TYPE_SOURCE, source_iface_init)) G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SOURCE, source_iface_init))
SpSource * SysprofSource *
sp_hostinfo_source_new (void) sysprof_hostinfo_source_new (void)
{ {
return g_object_new (SP_TYPE_HOSTINFO_SOURCE, NULL); return g_object_new (SYSPROF_TYPE_HOSTINFO_SOURCE, NULL);
} }
static gboolean static gboolean
read_stat (SpHostinfoSource *self) read_stat (SysprofHostinfoSource *self)
{ {
gssize len; gssize len;
@ -97,7 +97,7 @@ read_stat (SpHostinfoSource *self)
} }
static void static void
poll_cpu (SpHostinfoSource *self) poll_cpu (SysprofHostinfoSource *self)
{ {
gchar cpu[64] = { 0 }; gchar cpu[64] = { 0 };
glong user; glong user;
@ -195,9 +195,9 @@ poll_cpu (SpHostinfoSource *self)
} }
static void static void
publish_cpu (SpHostinfoSource *self) publish_cpu (SysprofHostinfoSource *self)
{ {
SpCaptureCounterValue *counter_values; SysprofCaptureCounterValue *counter_values;
guint *counter_ids; guint *counter_ids;
counter_ids = alloca (sizeof *counter_ids * self->n_cpu * 2); counter_ids = alloca (sizeof *counter_ids * self->n_cpu * 2);
@ -206,7 +206,7 @@ publish_cpu (SpHostinfoSource *self)
for (guint i = 0; i < self->n_cpu; i++) for (guint i = 0; i < self->n_cpu; i++)
{ {
CpuInfo *info = &g_array_index (self->cpu_info, CpuInfo, i); CpuInfo *info = &g_array_index (self->cpu_info, CpuInfo, i);
SpCaptureCounterValue *value = &counter_values[i*2]; SysprofCaptureCounterValue *value = &counter_values[i*2];
guint *id = &counter_ids[i*2]; guint *id = &counter_ids[i*2];
*id = info->counter_base; *id = info->counter_base;
@ -219,8 +219,8 @@ publish_cpu (SpHostinfoSource *self)
value->vdbl = info->freq; value->vdbl = info->freq;
} }
sp_capture_writer_set_counters (self->writer, sysprof_capture_writer_set_counters (self->writer,
SP_CAPTURE_CURRENT_TIME, SYSPROF_CAPTURE_CURRENT_TIME,
-1, -1,
getpid (), getpid (),
counter_ids, counter_ids,
@ -231,9 +231,9 @@ publish_cpu (SpHostinfoSource *self)
static gboolean static gboolean
collect_hostinfo_cb (gpointer data) collect_hostinfo_cb (gpointer data)
{ {
SpHostinfoSource *self = data; SysprofHostinfoSource *self = data;
g_assert (SP_IS_HOSTINFO_SOURCE (self)); g_assert (SYSPROF_IS_HOSTINFO_SOURCE (self));
poll_cpu (self); poll_cpu (self);
publish_cpu (self); publish_cpu (self);
@ -242,9 +242,9 @@ collect_hostinfo_cb (gpointer data)
} }
static void static void
sp_hostinfo_source_finalize (GObject *object) sysprof_hostinfo_source_finalize (GObject *object)
{ {
SpHostinfoSource *self = (SpHostinfoSource *)object; SysprofHostinfoSource *self = (SysprofHostinfoSource *)object;
if (self->handler) if (self->handler)
{ {
@ -252,23 +252,23 @@ sp_hostinfo_source_finalize (GObject *object)
self->handler = 0; self->handler = 0;
} }
g_clear_pointer (&self->writer, sp_capture_writer_unref); g_clear_pointer (&self->writer, sysprof_capture_writer_unref);
g_clear_pointer (&self->cpu_info, g_array_unref); g_clear_pointer (&self->cpu_info, g_array_unref);
g_clear_pointer (&self->stat_buf, g_free); g_clear_pointer (&self->stat_buf, g_free);
G_OBJECT_CLASS (sp_hostinfo_source_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_hostinfo_source_parent_class)->finalize (object);
} }
static void static void
sp_hostinfo_source_class_init (SpHostinfoSourceClass *klass) sysprof_hostinfo_source_class_init (SysprofHostinfoSourceClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_hostinfo_source_finalize; object_class->finalize = sysprof_hostinfo_source_finalize;
} }
static void static void
sp_hostinfo_source_init (SpHostinfoSource *self) sysprof_hostinfo_source_init (SysprofHostinfoSource *self)
{ {
self->stat_fd = -1; self->stat_fd = -1;
self->cpu_info = g_array_new (FALSE, TRUE, sizeof (CpuInfo)); self->cpu_info = g_array_new (FALSE, TRUE, sizeof (CpuInfo));
@ -276,35 +276,35 @@ sp_hostinfo_source_init (SpHostinfoSource *self)
} }
static void static void
sp_hostinfo_source_set_writer (SpSource *source, sysprof_hostinfo_source_set_writer (SysprofSource *source,
SpCaptureWriter *writer) SysprofCaptureWriter *writer)
{ {
SpHostinfoSource *self = (SpHostinfoSource *)source; SysprofHostinfoSource *self = (SysprofHostinfoSource *)source;
g_assert (SP_IS_HOSTINFO_SOURCE (self)); g_assert (SYSPROF_IS_HOSTINFO_SOURCE (self));
g_assert (writer != NULL); g_assert (writer != NULL);
g_clear_pointer (&self->writer, sp_capture_writer_unref); g_clear_pointer (&self->writer, sysprof_capture_writer_unref);
self->writer = sp_capture_writer_ref (writer); self->writer = sysprof_capture_writer_ref (writer);
} }
static void static void
sp_hostinfo_source_start (SpSource *source) sysprof_hostinfo_source_start (SysprofSource *source)
{ {
SpHostinfoSource *self = (SpHostinfoSource *)source; SysprofHostinfoSource *self = (SysprofHostinfoSource *)source;
g_assert (SP_IS_HOSTINFO_SOURCE (self)); g_assert (SYSPROF_IS_HOSTINFO_SOURCE (self));
/* 20 samples per second */ /* 20 samples per second */
self->handler = g_timeout_add (1000/20, collect_hostinfo_cb, self); self->handler = g_timeout_add (1000/20, collect_hostinfo_cb, self);
} }
static void static void
sp_hostinfo_source_stop (SpSource *source) sysprof_hostinfo_source_stop (SysprofSource *source)
{ {
SpHostinfoSource *self = (SpHostinfoSource *)source; SysprofHostinfoSource *self = (SysprofHostinfoSource *)source;
g_assert (SP_IS_HOSTINFO_SOURCE (self)); g_assert (SYSPROF_IS_HOSTINFO_SOURCE (self));
g_source_remove (self->handler); g_source_remove (self->handler);
self->handler = 0; self->handler = 0;
@ -315,16 +315,16 @@ sp_hostinfo_source_stop (SpSource *source)
self->stat_fd = -1; self->stat_fd = -1;
} }
sp_source_emit_finished (SP_SOURCE (self)); sysprof_source_emit_finished (SYSPROF_SOURCE (self));
} }
static void static void
sp_hostinfo_source_prepare (SpSource *source) sysprof_hostinfo_source_prepare (SysprofSource *source)
{ {
SpHostinfoSource *self = (SpHostinfoSource *)source; SysprofHostinfoSource *self = (SysprofHostinfoSource *)source;
SpCaptureCounter *counters; SysprofCaptureCounter *counters;
g_assert (SP_IS_HOSTINFO_SOURCE (self)); g_assert (SYSPROF_IS_HOSTINFO_SOURCE (self));
self->stat_fd = open ("/proc/stat", O_RDONLY); self->stat_fd = open ("/proc/stat", O_RDONLY);
self->n_cpu = g_get_num_processors (); self->n_cpu = g_get_num_processors ();
@ -335,20 +335,20 @@ sp_hostinfo_source_prepare (SpSource *source)
for (guint i = 0; i < self->n_cpu; i++) for (guint i = 0; i < self->n_cpu; i++)
{ {
SpCaptureCounter *ctr = &counters[i*2]; SysprofCaptureCounter *ctr = &counters[i*2];
CpuInfo info = { 0 }; CpuInfo info = { 0 };
/* /*
* Request 2 counter values. * Request 2 counter values.
* One for CPU and one for Frequency. * One for CPU and one for Frequency.
*/ */
info.counter_base = sp_capture_writer_request_counter (self->writer, 2); info.counter_base = sysprof_capture_writer_request_counter (self->writer, 2);
/* /*
* Define counters for capture file. * Define counters for capture file.
*/ */
ctr->id = info.counter_base; ctr->id = info.counter_base;
ctr->type = SP_CAPTURE_COUNTER_DOUBLE; ctr->type = SYSPROF_CAPTURE_COUNTER_DOUBLE;
ctr->value.vdbl = 0; ctr->value.vdbl = 0;
g_strlcpy (ctr->category, "CPU Percent", sizeof ctr->category); g_strlcpy (ctr->category, "CPU Percent", sizeof ctr->category);
g_snprintf (ctr->name, sizeof ctr->name, "Total CPU %d", i); g_snprintf (ctr->name, sizeof ctr->name, "Total CPU %d", i);
@ -358,7 +358,7 @@ sp_hostinfo_source_prepare (SpSource *source)
ctr++; ctr++;
ctr->id = info.counter_base + 1; ctr->id = info.counter_base + 1;
ctr->type = SP_CAPTURE_COUNTER_DOUBLE; ctr->type = SYSPROF_CAPTURE_COUNTER_DOUBLE;
ctr->value.vdbl = 0; ctr->value.vdbl = 0;
g_strlcpy (ctr->category, "CPU Frequency", sizeof ctr->category); g_strlcpy (ctr->category, "CPU Frequency", sizeof ctr->category);
g_snprintf (ctr->name, sizeof ctr->name, "CPU %d", i); g_snprintf (ctr->name, sizeof ctr->name, "CPU %d", i);
@ -368,21 +368,21 @@ sp_hostinfo_source_prepare (SpSource *source)
g_array_append_val (self->cpu_info, info); g_array_append_val (self->cpu_info, info);
} }
sp_capture_writer_define_counters (self->writer, sysprof_capture_writer_define_counters (self->writer,
SP_CAPTURE_CURRENT_TIME, SYSPROF_CAPTURE_CURRENT_TIME,
-1, -1,
getpid (), getpid (),
counters, counters,
self->n_cpu * 2); self->n_cpu * 2);
sp_source_emit_ready (SP_SOURCE (self)); sysprof_source_emit_ready (SYSPROF_SOURCE (self));
} }
static void static void
source_iface_init (SpSourceInterface *iface) source_iface_init (SysprofSourceInterface *iface)
{ {
iface->set_writer = sp_hostinfo_source_set_writer; iface->set_writer = sysprof_hostinfo_source_set_writer;
iface->prepare = sp_hostinfo_source_prepare; iface->prepare = sysprof_hostinfo_source_prepare;
iface->start = sp_hostinfo_source_start; iface->start = sysprof_hostinfo_source_start;
iface->stop = sp_hostinfo_source_stop; iface->stop = sysprof_hostinfo_source_stop;
} }

View File

@ -1,4 +1,4 @@
/* sp-hostinfo-source.h /* sysprof-hostinfo-source.h
* *
* Copyright 2016-2019 Christian Hergert <christian@hergert.me> * Copyright 2016-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,16 +22,16 @@
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
#include "sp-source.h" #include "sysprof-source.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_HOSTINFO_SOURCE (sp_hostinfo_source_get_type()) #define SYSPROF_TYPE_HOSTINFO_SOURCE (sysprof_hostinfo_source_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SpHostinfoSource, sp_hostinfo_source, SP, HOSTINFO_SOURCE, GObject) G_DECLARE_FINAL_TYPE (SysprofHostinfoSource, sysprof_hostinfo_source, SYSPROF, HOSTINFO_SOURCE, GObject)
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpSource *sp_hostinfo_source_new (void); SysprofSource *sysprof_hostinfo_source_new (void);
G_END_DECLS G_END_DECLS

View File

@ -0,0 +1,125 @@
/* sysprof-jitmap-symbol-resolver.c
*
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#include "config.h"
#include "sysprof-kernel-symbol.h"
#include "sysprof-jitmap-symbol-resolver.h"
struct _SysprofJitmapSymbolResolver
{
GObject parent_instance;
GHashTable *jitmap;
};
static void symbol_resolver_iface_init (SysprofSymbolResolverInterface *iface);
G_DEFINE_TYPE_EXTENDED (SysprofJitmapSymbolResolver,
sysprof_jitmap_symbol_resolver,
G_TYPE_OBJECT,
0,
G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SYMBOL_RESOLVER,
symbol_resolver_iface_init))
static void
sysprof_jitmap_symbol_resolver_finalize (GObject *object)
{
SysprofJitmapSymbolResolver *self = (SysprofJitmapSymbolResolver *)object;
g_clear_pointer (&self->jitmap, g_hash_table_unref);
G_OBJECT_CLASS (sysprof_jitmap_symbol_resolver_parent_class)->finalize (object);
}
static void
sysprof_jitmap_symbol_resolver_class_init (SysprofJitmapSymbolResolverClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sysprof_jitmap_symbol_resolver_finalize;
}
static void
sysprof_jitmap_symbol_resolver_init (SysprofJitmapSymbolResolver *self)
{
self->jitmap = g_hash_table_new_full (NULL, NULL, NULL, g_free);
}
static void
sysprof_jitmap_symbol_resolver_load (SysprofSymbolResolver *resolver,
SysprofCaptureReader *reader)
{
SysprofJitmapSymbolResolver *self = (SysprofJitmapSymbolResolver *)resolver;
SysprofCaptureFrameType type;
g_assert (SYSPROF_IS_JITMAP_SYMBOL_RESOLVER (self));
g_assert (reader != NULL);
while (sysprof_capture_reader_peek_type (reader, &type))
{
g_autoptr(GHashTable) jitmap = NULL;
GHashTableIter iter;
SysprofCaptureAddress addr;
const gchar *str;
if (type != SYSPROF_CAPTURE_FRAME_JITMAP)
{
if (!sysprof_capture_reader_skip (reader))
return;
continue;
}
if (!(jitmap = sysprof_capture_reader_read_jitmap (reader)))
return;
g_hash_table_iter_init (&iter, jitmap);
while (g_hash_table_iter_next (&iter, (gpointer *)&addr, (gpointer *)&str))
g_hash_table_insert (self->jitmap, GSIZE_TO_POINTER (addr), g_strdup (str));
}
}
static gchar *
sysprof_jitmap_symbol_resolver_resolve (SysprofSymbolResolver *resolver,
guint64 time,
GPid pid,
SysprofCaptureAddress address,
GQuark *tag)
{
SysprofJitmapSymbolResolver *self = (SysprofJitmapSymbolResolver *)resolver;
g_assert (SYSPROF_IS_JITMAP_SYMBOL_RESOLVER (self));
*tag = 0;
return g_strdup (g_hash_table_lookup (self->jitmap, GSIZE_TO_POINTER (address)));
}
static void
symbol_resolver_iface_init (SysprofSymbolResolverInterface *iface)
{
iface->load = sysprof_jitmap_symbol_resolver_load;
iface->resolve = sysprof_jitmap_symbol_resolver_resolve;
}
SysprofSymbolResolver *
sysprof_jitmap_symbol_resolver_new (void)
{
return g_object_new (SYSPROF_TYPE_JITMAP_SYMBOL_RESOLVER, NULL);
}

View File

@ -1,4 +1,4 @@
/* sp-jitmap-symbol-resolver.h /* sysprof-jitmap-symbol-resolver.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,14 +20,14 @@
#pragma once #pragma once
#include "sp-symbol-resolver.h" #include "sysprof-symbol-resolver.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_JITMAP_SYMBOL_RESOLVER (sp_jitmap_symbol_resolver_get_type()) #define SYSPROF_TYPE_JITMAP_SYMBOL_RESOLVER (sysprof_jitmap_symbol_resolver_get_type())
G_DECLARE_FINAL_TYPE (SpJitmapSymbolResolver, sp_jitmap_symbol_resolver, SP, JITMAP_SYMBOL_RESOLVER, GObject) G_DECLARE_FINAL_TYPE (SysprofJitmapSymbolResolver, sysprof_jitmap_symbol_resolver, SYSPROF, JITMAP_SYMBOL_RESOLVER, GObject)
SpSymbolResolver *sp_jitmap_symbol_resolver_new (void); SysprofSymbolResolver *sysprof_jitmap_symbol_resolver_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-kallsyms.c /* sysprof-kallsyms.c
* *
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com> * Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-kallsyms" #define G_LOG_DOMAIN "sysprof-kallsyms"
#include "config.h" #include "config.h"
@ -30,9 +30,9 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include "sp-kallsyms.h" #include "sysprof-kallsyms.h"
struct _SpKallsyms struct _SysprofKallsyms
{ {
gchar *buf; gchar *buf;
gsize buflen; gsize buflen;
@ -41,24 +41,24 @@ struct _SpKallsyms
}; };
void void
sp_kallsyms_free (SpKallsyms *self) sysprof_kallsyms_free (SysprofKallsyms *self)
{ {
if (self != NULL) if (self != NULL)
{ {
g_clear_pointer (&self->buf, g_free); g_clear_pointer (&self->buf, g_free);
g_slice_free (SpKallsyms, self); g_slice_free (SysprofKallsyms, self);
} }
} }
SpKallsyms * SysprofKallsyms *
sp_kallsyms_new (const gchar *path) sysprof_kallsyms_new (const gchar *path)
{ {
g_autoptr(SpKallsyms) self = NULL; g_autoptr(SysprofKallsyms) self = NULL;
if (path == NULL) if (path == NULL)
path = "/proc/kallsyms"; path = "/proc/kallsyms";
self = g_slice_new0 (SpKallsyms); self = g_slice_new0 (SysprofKallsyms);
if (!g_file_get_contents (path, &self->buf, &self->buflen, NULL)) if (!g_file_get_contents (path, &self->buf, &self->buflen, NULL))
return NULL; return NULL;
@ -70,7 +70,7 @@ sp_kallsyms_new (const gchar *path)
} }
gboolean gboolean
sp_kallsyms_next (SpKallsyms *self, sysprof_kallsyms_next (SysprofKallsyms *self,
const gchar **name, const gchar **name,
guint64 *address, guint64 *address,
guint8 *type) guint8 *type)

View File

@ -1,4 +1,4 @@
/* sp-kallsyms.h /* sysprof-kallsyms.h
* *
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com> * Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
* *
@ -24,18 +24,18 @@
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct _SpKallsyms SpKallsyms; typedef struct _SysprofKallsyms SysprofKallsyms;
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpKallsyms *sp_kallsyms_new (const gchar *path); SysprofKallsyms *sysprof_kallsyms_new (const gchar *path);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
gboolean sp_kallsyms_next (SpKallsyms *self, gboolean sysprof_kallsyms_next (SysprofKallsyms *self,
const gchar **name, const gchar **name,
guint64 *address, guint64 *address,
guint8 *type); guint8 *type);
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
void sp_kallsyms_free (SpKallsyms *self); void sysprof_kallsyms_free (SysprofKallsyms *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpKallsyms, sp_kallsyms_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofKallsyms, sysprof_kallsyms_free)
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-kernel-symbol-resolver.c /* sysprof-kernel-symbol-resolver.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,10 +20,10 @@
#include "config.h" #include "config.h"
#include "sp-kernel-symbol.h" #include "sysprof-kernel-symbol.h"
#include "sp-kernel-symbol-resolver.h" #include "sysprof-kernel-symbol-resolver.h"
struct _SpKernelSymbolResolver struct _SysprofKernelSymbolResolver
{ {
GObject parent_instance; GObject parent_instance;
}; };
@ -31,21 +31,21 @@ struct _SpKernelSymbolResolver
static GQuark linux_quark; static GQuark linux_quark;
static gchar * static gchar *
sp_kernel_symbol_resolver_resolve_with_context (SpSymbolResolver *resolver, sysprof_kernel_symbol_resolver_resolve_with_context (SysprofSymbolResolver *resolver,
guint64 time, guint64 time,
GPid pid, GPid pid,
SpAddressContext context, SysprofAddressContext context,
SpCaptureAddress address, SysprofCaptureAddress address,
GQuark *tag) GQuark *tag)
{ {
const SpKernelSymbol *sym; const SysprofKernelSymbol *sym;
g_assert (SP_IS_SYMBOL_RESOLVER (resolver)); g_assert (SYSPROF_IS_SYMBOL_RESOLVER (resolver));
if (context != SP_ADDRESS_CONTEXT_KERNEL) if (context != SYSPROF_ADDRESS_CONTEXT_KERNEL)
return NULL; return NULL;
sym = sp_kernel_symbol_from_address (address); sym = sysprof_kernel_symbol_from_address (address);
if (sym != NULL) if (sym != NULL)
{ {
@ -57,30 +57,30 @@ sp_kernel_symbol_resolver_resolve_with_context (SpSymbolResolver *resolver,
} }
static void static void
symbol_resolver_iface_init (SpSymbolResolverInterface *iface) symbol_resolver_iface_init (SysprofSymbolResolverInterface *iface)
{ {
iface->resolve_with_context = sp_kernel_symbol_resolver_resolve_with_context; iface->resolve_with_context = sysprof_kernel_symbol_resolver_resolve_with_context;
} }
G_DEFINE_TYPE_WITH_CODE (SpKernelSymbolResolver, G_DEFINE_TYPE_WITH_CODE (SysprofKernelSymbolResolver,
sp_kernel_symbol_resolver, sysprof_kernel_symbol_resolver,
G_TYPE_OBJECT, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (SP_TYPE_SYMBOL_RESOLVER, G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SYMBOL_RESOLVER,
symbol_resolver_iface_init)) symbol_resolver_iface_init))
static void static void
sp_kernel_symbol_resolver_class_init (SpKernelSymbolResolverClass *klass) sysprof_kernel_symbol_resolver_class_init (SysprofKernelSymbolResolverClass *klass)
{ {
linux_quark = g_quark_from_static_string ("Kernel"); linux_quark = g_quark_from_static_string ("Kernel");
} }
static void static void
sp_kernel_symbol_resolver_init (SpKernelSymbolResolver *skernel) sysprof_kernel_symbol_resolver_init (SysprofKernelSymbolResolver *skernel)
{ {
} }
SpSymbolResolver * SysprofSymbolResolver *
sp_kernel_symbol_resolver_new (void) sysprof_kernel_symbol_resolver_new (void)
{ {
return g_object_new (SP_TYPE_KERNEL_SYMBOL_RESOLVER, NULL); return g_object_new (SYSPROF_TYPE_KERNEL_SYMBOL_RESOLVER, NULL);
} }

View File

@ -1,4 +1,4 @@
/* sp-kernel-symbol-resolver.h /* sysprof-kernel-symbol-resolver.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,14 +20,14 @@
#pragma once #pragma once
#include "sp-symbol-resolver.h" #include "sysprof-symbol-resolver.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_KERNEL_SYMBOL_RESOLVER (sp_kernel_symbol_resolver_get_type()) #define SYSPROF_TYPE_KERNEL_SYMBOL_RESOLVER (sysprof_kernel_symbol_resolver_get_type())
G_DECLARE_FINAL_TYPE (SpKernelSymbolResolver, sp_kernel_symbol_resolver, SP, KERNEL_SYMBOL_RESOLVER, GObject) G_DECLARE_FINAL_TYPE (SysprofKernelSymbolResolver, sysprof_kernel_symbol_resolver, SYSPROF, KERNEL_SYMBOL_RESOLVER, GObject)
SpSymbolResolver *sp_kernel_symbol_resolver_new (void); SysprofSymbolResolver *sysprof_kernel_symbol_resolver_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-kernel-symbol.c /* sysprof-kernel-symbol.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-kernel-symbol" #define G_LOG_DOMAIN "sysprof-kernel-symbol"
#include "config.h" #include "config.h"
@ -28,8 +28,8 @@
#endif #endif
#include <sysprof-capture.h> #include <sysprof-capture.h>
#include "sp-kallsyms.h" #include "sysprof-kallsyms.h"
#include "sp-kernel-symbol.h" #include "sysprof-kernel-symbol.h"
static GArray *kernel_symbols; static GArray *kernel_symbols;
static GStringChunk *kernel_symbol_strs; static GStringChunk *kernel_symbol_strs;
@ -68,11 +68,11 @@ static const gchar *kernel_symbols_skip[] = {
}; };
static gint static gint
sp_kernel_symbol_compare (gconstpointer a, sysprof_kernel_symbol_compare (gconstpointer a,
gconstpointer b) gconstpointer b)
{ {
const SpKernelSymbol *syma = a; const SysprofKernelSymbol *syma = a;
const SpKernelSymbol *symb = b; const SysprofKernelSymbol *symb = b;
if (syma->address > symb->address) if (syma->address > symb->address)
return 1; return 1;
@ -125,7 +125,7 @@ failure:
} }
static gboolean static gboolean
sp_kernel_symbol_load_from_sysprofd (void) sysprof_kernel_symbol_load_from_sysprofd (void)
{ {
g_autoptr(GDBusConnection) conn = NULL; g_autoptr(GDBusConnection) conn = NULL;
g_autoptr(GVariant) ret = NULL; g_autoptr(GVariant) ret = NULL;
@ -164,13 +164,13 @@ sp_kernel_symbol_load_from_sysprofd (void)
return FALSE; return FALSE;
} }
ar = g_array_new (FALSE, TRUE, sizeof (SpKernelSymbol)); ar = g_array_new (FALSE, TRUE, sizeof (SysprofKernelSymbol));
results = g_variant_get_child_value (ret, 0); results = g_variant_get_child_value (ret, 0);
g_variant_iter_init (&iter, results); g_variant_iter_init (&iter, results);
while (g_variant_iter_loop (&iter, "(ty&s)", &addr, &type, &name)) while (g_variant_iter_loop (&iter, "(ty&s)", &addr, &type, &name))
{ {
SpKernelSymbol sym; SysprofKernelSymbol sym;
if (type_is_ignored (type)) if (type_is_ignored (type))
continue; continue;
@ -181,12 +181,12 @@ sp_kernel_symbol_load_from_sysprofd (void)
g_array_append_val (ar, sym); g_array_append_val (ar, sym);
} }
g_array_sort (ar, sp_kernel_symbol_compare); g_array_sort (ar, sysprof_kernel_symbol_compare);
#if 0 #if 0
g_print ("First: 0x%lx Last: 0x%lx\n", g_print ("First: 0x%lx Last: 0x%lx\n",
g_array_index (ar, SpKernelSymbol, 0).address, g_array_index (ar, SysprofKernelSymbol, 0).address,
g_array_index (ar, SpKernelSymbol, ar->len - 1).address); g_array_index (ar, SysprofKernelSymbol, ar->len - 1).address);
#endif #endif
kernel_symbols = g_steal_pointer (&ar); kernel_symbols = g_steal_pointer (&ar);
@ -195,10 +195,10 @@ sp_kernel_symbol_load_from_sysprofd (void)
} }
static gboolean static gboolean
sp_kernel_symbol_load (void) sysprof_kernel_symbol_load (void)
{ {
g_autoptr(GHashTable) skip = NULL; g_autoptr(GHashTable) skip = NULL;
g_autoptr(SpKallsyms) kallsyms = NULL; g_autoptr(SysprofKallsyms) kallsyms = NULL;
g_autoptr(GArray) ar = NULL; g_autoptr(GArray) ar = NULL;
const gchar *name; const gchar *name;
guint64 addr; guint64 addr;
@ -210,14 +210,14 @@ sp_kernel_symbol_load (void)
kernel_symbols_skip_hash = g_steal_pointer (&skip); kernel_symbols_skip_hash = g_steal_pointer (&skip);
kernel_symbol_strs = g_string_chunk_new (4096); kernel_symbol_strs = g_string_chunk_new (4096);
ar = g_array_new (FALSE, TRUE, sizeof (SpKernelSymbol)); ar = g_array_new (FALSE, TRUE, sizeof (SysprofKernelSymbol));
if (!(kallsyms = sp_kallsyms_new (NULL))) if (!(kallsyms = sysprof_kallsyms_new (NULL)))
goto query_daemon; goto query_daemon;
while (sp_kallsyms_next (kallsyms, &name, &addr, &type)) while (sysprof_kallsyms_next (kallsyms, &name, &addr, &type))
{ {
SpKernelSymbol sym; SysprofKernelSymbol sym;
if (type_is_ignored (type)) if (type_is_ignored (type))
continue; continue;
@ -231,13 +231,13 @@ sp_kernel_symbol_load (void)
if (ar->len == 0) if (ar->len == 0)
goto query_daemon; goto query_daemon;
g_array_sort (ar, sp_kernel_symbol_compare); g_array_sort (ar, sysprof_kernel_symbol_compare);
kernel_symbols = g_steal_pointer (&ar); kernel_symbols = g_steal_pointer (&ar);
return TRUE; return TRUE;
query_daemon: query_daemon:
if (sp_kernel_symbol_load_from_sysprofd ()) if (sysprof_kernel_symbol_load_from_sysprofd ())
return TRUE; return TRUE;
g_warning ("Kernel symbols will not be available."); g_warning ("Kernel symbols will not be available.");
@ -245,9 +245,9 @@ query_daemon:
return FALSE; return FALSE;
} }
static const SpKernelSymbol * static const SysprofKernelSymbol *
sp_kernel_symbol_lookup (SpKernelSymbol *symbols, sysprof_kernel_symbol_lookup (SysprofKernelSymbol *symbols,
SpCaptureAddress address, SysprofCaptureAddress address,
guint first, guint first,
guint last) guint last)
{ {
@ -272,25 +272,25 @@ sp_kernel_symbol_lookup (SpKernelSymbol *symbols,
int mid = (first + last) / 2; int mid = (first + last) / 2;
if (symbols [mid].address > address) if (symbols [mid].address > address)
return sp_kernel_symbol_lookup (symbols, address, first, mid); return sysprof_kernel_symbol_lookup (symbols, address, first, mid);
else else
return sp_kernel_symbol_lookup (symbols, address, mid, last); return sysprof_kernel_symbol_lookup (symbols, address, mid, last);
} }
} }
/** /**
* sp_kernel_symbol_from_address: * sysprof_kernel_symbol_from_address:
* @address: the address of the instruction pointer * @address: the address of the instruction pointer
* *
* Locates the kernel symbol that contains @address. * Locates the kernel symbol that contains @address.
* *
* Returns: (transfer none): An #SpKernelSymbol or %NULL. * Returns: (transfer none): An #SysprofKernelSymbol or %NULL.
*/ */
const SpKernelSymbol * const SysprofKernelSymbol *
sp_kernel_symbol_from_address (SpCaptureAddress address) sysprof_kernel_symbol_from_address (SysprofCaptureAddress address)
{ {
const SpKernelSymbol *first; const SysprofKernelSymbol *first;
const SpKernelSymbol *ret; const SysprofKernelSymbol *ret;
if G_UNLIKELY (kernel_symbols == NULL) if G_UNLIKELY (kernel_symbols == NULL)
{ {
@ -299,7 +299,7 @@ sp_kernel_symbol_from_address (SpCaptureAddress address)
if (failed) if (failed)
return NULL; return NULL;
if (!sp_kernel_symbol_load ()) if (!sysprof_kernel_symbol_load ())
{ {
failed = TRUE; failed = TRUE;
return NULL; return NULL;
@ -310,11 +310,11 @@ sp_kernel_symbol_from_address (SpCaptureAddress address)
g_assert (kernel_symbols->len > 0); g_assert (kernel_symbols->len > 0);
/* Short circuit if this is out of range */ /* Short circuit if this is out of range */
first = &g_array_index (kernel_symbols, SpKernelSymbol, 0); first = &g_array_index (kernel_symbols, SysprofKernelSymbol, 0);
if (address < first->address) if (address < first->address)
return NULL; return NULL;
ret = sp_kernel_symbol_lookup ((SpKernelSymbol *)(gpointer)kernel_symbols->data, ret = sysprof_kernel_symbol_lookup ((SysprofKernelSymbol *)(gpointer)kernel_symbols->data,
address, address,
0, 0,
kernel_symbols->len - 1); kernel_symbols->len - 1);

View File

@ -1,4 +1,4 @@
/* sp-kernel-symbol.h /* sysprof-kernel-symbol.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,16 +20,16 @@
#pragma once #pragma once
#include "sp-capture-types.h" #include "sysprof-capture-types.h"
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct typedef struct
{ {
SpCaptureAddress address; SysprofCaptureAddress address;
const gchar *name; const gchar *name;
} SpKernelSymbol; } SysprofKernelSymbol;
const SpKernelSymbol *sp_kernel_symbol_from_address (SpCaptureAddress address); const SysprofKernelSymbol *sysprof_kernel_symbol_from_address (SysprofCaptureAddress address);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-line-reader.c /* sysprof-line-reader.c
* *
* Copyright 2015-2019 Christian Hergert <christian@hergert.me> * Copyright 2015-2019 Christian Hergert <christian@hergert.me>
* *
@ -22,9 +22,9 @@
#include <string.h> #include <string.h>
#include "sp-line-reader.h" #include "sysprof-line-reader.h"
struct _SpLineReader struct _SysprofLineReader
{ {
const gchar *contents; const gchar *contents;
gsize length; gsize length;
@ -32,30 +32,30 @@ struct _SpLineReader
}; };
void void
sp_line_reader_free (SpLineReader *self) sysprof_line_reader_free (SysprofLineReader *self)
{ {
g_slice_free (SpLineReader, self); g_slice_free (SysprofLineReader, self);
} }
/** /**
* sp_line_reader_new: * sysprof_line_reader_new:
* @contents: The buffer to read lines from * @contents: The buffer to read lines from
* @length: the length of @buffer in bytes * @length: the length of @buffer in bytes
* *
* Creates a new #SpLineReader for the contents provided. @contents are not * Creates a new #SysprofLineReader for the contents provided. @contents are not
* copied and therefore it is a programming error to free contents before * copied and therefore it is a programming error to free contents before
* freeing the #SpLineReader structure. * freeing the #SysprofLineReader structure.
* *
* Use sp_line_reader_next() to read through the lines of the buffer. * Use sysprof_line_reader_next() to read through the lines of the buffer.
* *
* Returns: (transfer full): A new #SpLineReader that should be freed with * Returns: (transfer full): A new #SysprofLineReader that should be freed with
* sp_line_reader_free() when no longer in use. * sysprof_line_reader_free() when no longer in use.
*/ */
SpLineReader * SysprofLineReader *
sp_line_reader_new (const gchar *contents, sysprof_line_reader_new (const gchar *contents,
gssize length) gssize length)
{ {
SpLineReader *self = g_slice_new (SpLineReader); SysprofLineReader *self = g_slice_new (SysprofLineReader);
if (contents == NULL) if (contents == NULL)
{ {
@ -75,13 +75,13 @@ sp_line_reader_new (const gchar *contents,
} }
/** /**
* sp_line_reader_next: * sysprof_line_reader_next:
* @self: the #SpLineReader * @self: the #SysprofLineReader
* @length: a location for the length of the line in bytes * @length: a location for the length of the line in bytes
* *
* Moves forward to the beginning of the next line in the buffer. No changes to * Moves forward to the beginning of the next line in the buffer. No changes to
* the buffer are made, and the result is a pointer within the string passed as * the buffer are made, and the result is a pointer within the string passed as
* @contents in sp_line_reader_init(). Since the line most likely will not be * @contents in sysprof_line_reader_init(). Since the line most likely will not be
* terminated with a NULL byte, you must provide @length to determine the * terminated with a NULL byte, you must provide @length to determine the
* length of the line. * length of the line.
* *
@ -94,7 +94,7 @@ sp_line_reader_new (const gchar *contents,
* Returns: (nullable) (transfer none): The beginning of the line within the buffer * Returns: (nullable) (transfer none): The beginning of the line within the buffer
*/ */
const gchar * const gchar *
sp_line_reader_next (SpLineReader *self, sysprof_line_reader_next (SysprofLineReader *self,
gsize *length) gsize *length)
{ {
const gchar *ret; const gchar *ret;

View File

@ -1,4 +1,4 @@
/* sp-line-reader.h /* sysprof-line-reader.h
* *
* Copyright 2015-2019 Christian Hergert <christian@hergert.me> * Copyright 2015-2019 Christian Hergert <christian@hergert.me>
* *
@ -24,17 +24,17 @@
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct _SpLineReader SpLineReader; typedef struct _SysprofLineReader SysprofLineReader;
G_GNUC_INTERNAL G_GNUC_INTERNAL
SpLineReader *sp_line_reader_new (const gchar *contents, SysprofLineReader *sysprof_line_reader_new (const gchar *contents,
gssize length); gssize length);
G_GNUC_INTERNAL G_GNUC_INTERNAL
void sp_line_reader_free (SpLineReader *self); void sysprof_line_reader_free (SysprofLineReader *self);
G_GNUC_INTERNAL G_GNUC_INTERNAL
const gchar *sp_line_reader_next (SpLineReader *self, const gchar *sysprof_line_reader_next (SysprofLineReader *self,
gsize *length); gsize *length);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpLineReader, sp_line_reader_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofLineReader, sysprof_line_reader_free)
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-local-profiler.c /* sysprof-local-profiler.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -25,12 +25,12 @@
#include <errno.h> #include <errno.h>
#include <unistd.h> #include <unistd.h>
#include "sp-local-profiler.h" #include "sysprof-local-profiler.h"
#include "sp-platform.h" #include "sysprof-platform.h"
typedef struct typedef struct
{ {
SpCaptureWriter *writer; SysprofCaptureWriter *writer;
/* All sources added */ /* All sources added */
GPtrArray *sources; GPtrArray *sources;
@ -85,13 +85,13 @@ typedef struct
* We do this to avoid a more complex state machine (for now). * We do this to avoid a more complex state machine (for now).
*/ */
guint stop_after_starting : 1; guint stop_after_starting : 1;
} SpLocalProfilerPrivate; } SysprofLocalProfilerPrivate;
static void profiler_iface_init (SpProfilerInterface *iface); static void profiler_iface_init (SysprofProfilerInterface *iface);
G_DEFINE_TYPE_EXTENDED (SpLocalProfiler, sp_local_profiler, G_TYPE_OBJECT, 0, G_DEFINE_TYPE_EXTENDED (SysprofLocalProfiler, sysprof_local_profiler, G_TYPE_OBJECT, 0,
G_ADD_PRIVATE (SpLocalProfiler) G_ADD_PRIVATE (SysprofLocalProfiler)
G_IMPLEMENT_INTERFACE (SP_TYPE_PROFILER, profiler_iface_init)) G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_PROFILER, profiler_iface_init))
enum { enum {
PROP_0, PROP_0,
@ -130,11 +130,11 @@ _g_ptr_array_contains (GPtrArray *ar,
} }
static void static void
sp_local_profiler_clear_timer (SpLocalProfiler *self) sysprof_local_profiler_clear_timer (SysprofLocalProfiler *self)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_clear_pointer (&priv->timer, g_timer_destroy); g_clear_pointer (&priv->timer, g_timer_destroy);
@ -146,21 +146,21 @@ sp_local_profiler_clear_timer (SpLocalProfiler *self)
} }
static void static void
sp_local_profiler_real_stopped (SpProfiler *profiler) sysprof_local_profiler_real_stopped (SysprofProfiler *profiler)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
sp_local_profiler_clear_timer (self); sysprof_local_profiler_clear_timer (self);
} }
static gboolean static gboolean
sp_local_profiler_notify_elapsed_cb (gpointer data) sysprof_local_profiler_notify_elapsed_cb (gpointer data)
{ {
SpLocalProfiler *self = data; SysprofLocalProfiler *self = data;
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_object_notify (G_OBJECT (self), "elapsed"); g_object_notify (G_OBJECT (self), "elapsed");
@ -168,11 +168,11 @@ sp_local_profiler_notify_elapsed_cb (gpointer data)
} }
static void static void
sp_local_profiler_finish_stopping (SpLocalProfiler *self) sysprof_local_profiler_finish_stopping (SysprofLocalProfiler *self)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_assert (priv->is_starting == FALSE); g_assert (priv->is_starting == FALSE);
g_assert (priv->is_stopping == TRUE); g_assert (priv->is_stopping == TRUE);
g_assert (priv->stopping->len == 0); g_assert (priv->stopping->len == 0);
@ -181,26 +181,26 @@ sp_local_profiler_finish_stopping (SpLocalProfiler *self)
{ {
const GError *error = g_ptr_array_index (priv->failures, 0); const GError *error = g_ptr_array_index (priv->failures, 0);
sp_profiler_emit_failed (SP_PROFILER (self), error); sysprof_profiler_emit_failed (SYSPROF_PROFILER (self), error);
} }
priv->is_running = FALSE; priv->is_running = FALSE;
priv->is_stopping = FALSE; priv->is_stopping = FALSE;
sp_profiler_emit_stopped (SP_PROFILER (self)); sysprof_profiler_emit_stopped (SYSPROF_PROFILER (self));
g_object_notify (G_OBJECT (self), "is-mutable"); g_object_notify (G_OBJECT (self), "is-mutable");
g_object_notify (G_OBJECT (self), "is-running"); g_object_notify (G_OBJECT (self), "is-running");
} }
static void static void
sp_local_profiler_stop (SpProfiler *profiler) sysprof_local_profiler_stop (SysprofProfiler *profiler)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
guint i; guint i;
g_return_if_fail (SP_IS_LOCAL_PROFILER (self)); g_return_if_fail (SYSPROF_IS_LOCAL_PROFILER (self));
if (priv->is_starting) if (priv->is_starting)
{ {
@ -217,13 +217,13 @@ sp_local_profiler_stop (SpProfiler *profiler)
* First we add everything to the stopping list, so that we can * First we add everything to the stopping list, so that we can
* be notified of when they have completed. If everything stopped * be notified of when they have completed. If everything stopped
* synchronously, the stopping list will be empty after calling * synchronously, the stopping list will be empty after calling
* sp_source_stop() for every source. Otherwise, we need to delay * sysprof_source_stop() for every source. Otherwise, we need to delay
* stopping for a little bit. * stopping for a little bit.
*/ */
for (i = 0; i < priv->sources->len; i++) for (i = 0; i < priv->sources->len; i++)
{ {
SpSource *source = g_ptr_array_index (priv->sources, i); SysprofSource *source = g_ptr_array_index (priv->sources, i);
if (!_g_ptr_array_contains (priv->finished_or_failed, source)) if (!_g_ptr_array_contains (priv->finished_or_failed, source))
g_ptr_array_add (priv->stopping, g_object_ref (source)); g_ptr_array_add (priv->stopping, g_object_ref (source));
@ -231,40 +231,40 @@ sp_local_profiler_stop (SpProfiler *profiler)
for (i = 0; i < priv->sources->len; i++) for (i = 0; i < priv->sources->len; i++)
{ {
SpSource *source = g_ptr_array_index (priv->sources, i); SysprofSource *source = g_ptr_array_index (priv->sources, i);
sp_source_stop (source); sysprof_source_stop (source);
} }
if (priv->is_stopping && priv->stopping->len == 0) if (priv->is_stopping && priv->stopping->len == 0)
sp_local_profiler_finish_stopping (self); sysprof_local_profiler_finish_stopping (self);
} }
static void static void
sp_local_profiler_dispose (GObject *object) sysprof_local_profiler_dispose (GObject *object)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)object; SysprofLocalProfiler *self = (SysprofLocalProfiler *)object;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
if (priv->is_running || priv->is_starting) if (priv->is_running || priv->is_starting)
{ {
sp_local_profiler_stop (SP_PROFILER (self)); sysprof_local_profiler_stop (SYSPROF_PROFILER (self));
return; return;
} }
sp_local_profiler_clear_timer (self); sysprof_local_profiler_clear_timer (self);
G_OBJECT_CLASS (sp_local_profiler_parent_class)->dispose (object); G_OBJECT_CLASS (sysprof_local_profiler_parent_class)->dispose (object);
} }
static void static void
sp_local_profiler_finalize (GObject *object) sysprof_local_profiler_finalize (GObject *object)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)object; SysprofLocalProfiler *self = (SysprofLocalProfiler *)object;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_clear_pointer (&priv->writer, sp_capture_writer_unref); g_clear_pointer (&priv->writer, sysprof_capture_writer_unref);
g_clear_pointer (&priv->sources, g_ptr_array_unref); g_clear_pointer (&priv->sources, g_ptr_array_unref);
g_clear_pointer (&priv->starting, g_ptr_array_unref); g_clear_pointer (&priv->starting, g_ptr_array_unref);
g_clear_pointer (&priv->stopping, g_ptr_array_unref); g_clear_pointer (&priv->stopping, g_ptr_array_unref);
@ -272,17 +272,17 @@ sp_local_profiler_finalize (GObject *object)
g_clear_pointer (&priv->finished_or_failed, g_ptr_array_unref); g_clear_pointer (&priv->finished_or_failed, g_ptr_array_unref);
g_clear_pointer (&priv->pids, g_array_unref); g_clear_pointer (&priv->pids, g_array_unref);
G_OBJECT_CLASS (sp_local_profiler_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_local_profiler_parent_class)->finalize (object);
} }
static void static void
sp_local_profiler_get_property (GObject *object, sysprof_local_profiler_get_property (GObject *object,
guint prop_id, guint prop_id,
GValue *value, GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpLocalProfiler *self = SP_LOCAL_PROFILER (object); SysprofLocalProfiler *self = SYSPROF_LOCAL_PROFILER (object);
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -324,13 +324,13 @@ sp_local_profiler_get_property (GObject *object,
} }
static void static void
sp_local_profiler_set_property (GObject *object, sysprof_local_profiler_set_property (GObject *object,
guint prop_id, guint prop_id,
const GValue *value, const GValue *value,
GParamSpec *pspec) GParamSpec *pspec)
{ {
SpLocalProfiler *self = SP_LOCAL_PROFILER (object); SysprofLocalProfiler *self = SYSPROF_LOCAL_PROFILER (object);
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
switch (prop_id) switch (prop_id)
{ {
@ -362,14 +362,14 @@ sp_local_profiler_set_property (GObject *object,
} }
static void static void
sp_local_profiler_class_init (SpLocalProfilerClass *klass) sysprof_local_profiler_class_init (SysprofLocalProfilerClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = sp_local_profiler_dispose; object_class->dispose = sysprof_local_profiler_dispose;
object_class->finalize = sp_local_profiler_finalize; object_class->finalize = sysprof_local_profiler_finalize;
object_class->get_property = sp_local_profiler_get_property; object_class->get_property = sysprof_local_profiler_get_property;
object_class->set_property = sp_local_profiler_set_property; object_class->set_property = sysprof_local_profiler_set_property;
g_object_class_override_property (object_class, PROP_ELAPSED, "elapsed"); g_object_class_override_property (object_class, PROP_ELAPSED, "elapsed");
g_object_class_override_property (object_class, PROP_IS_MUTABLE, "is-mutable"); g_object_class_override_property (object_class, PROP_IS_MUTABLE, "is-mutable");
@ -382,9 +382,9 @@ sp_local_profiler_class_init (SpLocalProfilerClass *klass)
} }
static void static void
sp_local_profiler_init (SpLocalProfiler *self) sysprof_local_profiler_init (SysprofLocalProfiler *self)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
priv->whole_system = TRUE; priv->whole_system = TRUE;
@ -396,23 +396,23 @@ sp_local_profiler_init (SpLocalProfiler *self)
priv->pids = g_array_new (FALSE, FALSE, sizeof (GPid)); priv->pids = g_array_new (FALSE, FALSE, sizeof (GPid));
} }
SpProfiler * SysprofProfiler *
sp_local_profiler_new (void) sysprof_local_profiler_new (void)
{ {
return g_object_new (SP_TYPE_LOCAL_PROFILER, NULL); return g_object_new (SYSPROF_TYPE_LOCAL_PROFILER, NULL);
} }
static void static void
sp_local_profiler_finish_startup (SpLocalProfiler *self) sysprof_local_profiler_finish_startup (SysprofLocalProfiler *self)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
guint i; guint i;
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_assert (priv->is_starting == TRUE); g_assert (priv->is_starting == TRUE);
g_assert (priv->starting->len == 0); g_assert (priv->starting->len == 0);
sp_local_profiler_clear_timer (self); sysprof_local_profiler_clear_timer (self);
priv->timer = g_timer_new (); priv->timer = g_timer_new ();
@ -423,14 +423,14 @@ sp_local_profiler_finish_startup (SpLocalProfiler *self)
*/ */
priv->timer_notify_source = priv->timer_notify_source =
g_timeout_add (1000, g_timeout_add (1000,
sp_local_profiler_notify_elapsed_cb, sysprof_local_profiler_notify_elapsed_cb,
self); self);
for (i = 0; i < priv->sources->len; i++) for (i = 0; i < priv->sources->len; i++)
{ {
SpSource *source = g_ptr_array_index (priv->sources, i); SysprofSource *source = g_ptr_array_index (priv->sources, i);
sp_source_start (source); sysprof_source_start (source);
} }
priv->is_starting = FALSE; priv->is_starting = FALSE;
@ -444,8 +444,8 @@ sp_local_profiler_finish_startup (SpLocalProfiler *self)
const GError *error = g_ptr_array_index (priv->failures, 0); const GError *error = g_ptr_array_index (priv->failures, 0);
g_object_ref (self); g_object_ref (self);
sp_profiler_emit_failed (SP_PROFILER (self), error); sysprof_profiler_emit_failed (SYSPROF_PROFILER (self), error);
sp_local_profiler_stop (SP_PROFILER (self)); sysprof_local_profiler_stop (SYSPROF_PROFILER (self));
g_object_unref (self); g_object_unref (self);
return; return;
} }
@ -462,17 +462,17 @@ sp_local_profiler_finish_startup (SpLocalProfiler *self)
* If we detect this, we stop immediately. * If we detect this, we stop immediately.
*/ */
if (priv->finished_or_failed->len == priv->sources->len || priv->stop_after_starting) if (priv->finished_or_failed->len == priv->sources->len || priv->stop_after_starting)
sp_local_profiler_stop (SP_PROFILER (self)); sysprof_local_profiler_stop (SYSPROF_PROFILER (self));
} }
static void static void
sp_local_profiler_start (SpProfiler *profiler) sysprof_local_profiler_start (SysprofProfiler *profiler)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
guint i; guint i;
g_return_if_fail (SP_IS_LOCAL_PROFILER (self)); g_return_if_fail (SYSPROF_IS_LOCAL_PROFILER (self));
g_return_if_fail (priv->is_running == FALSE); g_return_if_fail (priv->is_running == FALSE);
g_return_if_fail (priv->is_stopping == FALSE); g_return_if_fail (priv->is_stopping == FALSE);
g_return_if_fail (priv->is_starting == FALSE); g_return_if_fail (priv->is_starting == FALSE);
@ -482,11 +482,11 @@ sp_local_profiler_start (SpProfiler *profiler)
if (priv->writer == NULL) if (priv->writer == NULL)
{ {
SpCaptureWriter *writer; SysprofCaptureWriter *writer;
int fd; int fd;
if ((-1 == (fd = sp_memfd_create ("[sysprof]"))) || if ((-1 == (fd = sysprof_memfd_create ("[sysprof]"))) ||
(NULL == (writer = sp_capture_writer_new_from_fd (fd, 0)))) (NULL == (writer = sysprof_capture_writer_new_from_fd (fd, 0))))
{ {
const GError error = { const GError error = {
G_FILE_ERROR, G_FILE_ERROR,
@ -497,13 +497,13 @@ sp_local_profiler_start (SpProfiler *profiler)
if (fd != -1) if (fd != -1)
close (fd); close (fd);
sp_profiler_emit_failed (SP_PROFILER (self), &error); sysprof_profiler_emit_failed (SYSPROF_PROFILER (self), &error);
return; return;
} }
sp_profiler_set_writer (SP_PROFILER (self), writer); sysprof_profiler_set_writer (SYSPROF_PROFILER (self), writer);
g_clear_pointer (&writer, sp_capture_writer_unref); g_clear_pointer (&writer, sysprof_capture_writer_unref);
} }
priv->is_running = TRUE; priv->is_running = TRUE;
@ -552,7 +552,7 @@ sp_local_profiler_start (SpProfiler *profiler)
for (i = 0; i < priv->sources->len; i++) for (i = 0; i < priv->sources->len; i++)
{ {
SpSource *source = g_ptr_array_index (priv->sources, i); SysprofSource *source = g_ptr_array_index (priv->sources, i);
guint j; guint j;
if (priv->whole_system == FALSE) if (priv->whole_system == FALSE)
@ -561,56 +561,56 @@ sp_local_profiler_start (SpProfiler *profiler)
{ {
GPid pid = g_array_index (priv->pids, GPid, j); GPid pid = g_array_index (priv->pids, GPid, j);
sp_source_add_pid (source, pid); sysprof_source_add_pid (source, pid);
} }
} }
sp_source_set_writer (source, priv->writer); sysprof_source_set_writer (source, priv->writer);
sp_source_prepare (source); sysprof_source_prepare (source);
} }
for (i = 0; i < priv->sources->len; i++) for (i = 0; i < priv->sources->len; i++)
{ {
SpSource *source = g_ptr_array_index (priv->sources, i); SysprofSource *source = g_ptr_array_index (priv->sources, i);
if (!sp_source_get_is_ready (source)) if (!sysprof_source_get_is_ready (source))
g_ptr_array_add (priv->starting, g_object_ref (source)); g_ptr_array_add (priv->starting, g_object_ref (source));
} }
if (priv->starting->len == 0) if (priv->starting->len == 0)
sp_local_profiler_finish_startup (self); sysprof_local_profiler_finish_startup (self);
} }
static void static void
sp_local_profiler_set_writer (SpProfiler *profiler, sysprof_local_profiler_set_writer (SysprofProfiler *profiler,
SpCaptureWriter *writer) SysprofCaptureWriter *writer)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_return_if_fail (SP_IS_LOCAL_PROFILER (self)); g_return_if_fail (SYSPROF_IS_LOCAL_PROFILER (self));
g_return_if_fail (priv->is_running == FALSE); g_return_if_fail (priv->is_running == FALSE);
g_return_if_fail (priv->is_stopping == FALSE); g_return_if_fail (priv->is_stopping == FALSE);
g_return_if_fail (writer != NULL); g_return_if_fail (writer != NULL);
if (priv->writer != writer) if (priv->writer != writer)
{ {
g_clear_pointer (&priv->writer, sp_capture_writer_unref); g_clear_pointer (&priv->writer, sysprof_capture_writer_unref);
if (writer != NULL) if (writer != NULL)
priv->writer = sp_capture_writer_ref (writer); priv->writer = sysprof_capture_writer_ref (writer);
} }
} }
static void static void
sp_local_profiler_track_completed (SpLocalProfiler *self, sysprof_local_profiler_track_completed (SysprofLocalProfiler *self,
SpSource *source) SysprofSource *source)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
gint i; gint i;
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_assert (SP_IS_SOURCE (source)); g_assert (SYSPROF_IS_SOURCE (source));
if (!_g_ptr_array_contains (priv->finished_or_failed, source)) if (!_g_ptr_array_contains (priv->finished_or_failed, source))
g_ptr_array_add (priv->finished_or_failed, g_object_ref (source)); g_ptr_array_add (priv->finished_or_failed, g_object_ref (source));
@ -623,7 +623,7 @@ sp_local_profiler_track_completed (SpLocalProfiler *self,
{ {
g_ptr_array_remove_index (priv->starting, i); g_ptr_array_remove_index (priv->starting, i);
if (priv->starting->len == 0) if (priv->starting->len == 0)
sp_local_profiler_finish_startup (self); sysprof_local_profiler_finish_startup (self);
} }
} }
@ -636,47 +636,47 @@ sp_local_profiler_track_completed (SpLocalProfiler *self,
g_ptr_array_remove_index_fast (priv->stopping, i); g_ptr_array_remove_index_fast (priv->stopping, i);
if ((priv->is_stopping == TRUE) && (priv->stopping->len == 0)) if ((priv->is_stopping == TRUE) && (priv->stopping->len == 0))
sp_local_profiler_finish_stopping (self); sysprof_local_profiler_finish_stopping (self);
} }
} }
if (!priv->is_starting) if (!priv->is_starting)
{ {
if (priv->finished_or_failed->len == priv->sources->len) if (priv->finished_or_failed->len == priv->sources->len)
sp_local_profiler_stop (SP_PROFILER (self)); sysprof_local_profiler_stop (SYSPROF_PROFILER (self));
} }
} }
static void static void
sp_local_profiler_source_finished (SpLocalProfiler *self, sysprof_local_profiler_source_finished (SysprofLocalProfiler *self,
SpSource *source) SysprofSource *source)
{ {
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_assert (SP_IS_SOURCE (source)); g_assert (SYSPROF_IS_SOURCE (source));
sp_local_profiler_track_completed (self, source); sysprof_local_profiler_track_completed (self, source);
} }
static void static void
sp_local_profiler_source_ready (SpLocalProfiler *self, sysprof_local_profiler_source_ready (SysprofLocalProfiler *self,
SpSource *source) SysprofSource *source)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
guint i; guint i;
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_assert (SP_IS_SOURCE (source)); g_assert (SYSPROF_IS_SOURCE (source));
for (i = 0; i < priv->starting->len; i++) for (i = 0; i < priv->starting->len; i++)
{ {
SpSource *ele = g_ptr_array_index (priv->starting, i); SysprofSource *ele = g_ptr_array_index (priv->starting, i);
if (ele == source) if (ele == source)
{ {
g_ptr_array_remove_index_fast (priv->starting, i); g_ptr_array_remove_index_fast (priv->starting, i);
if ((priv->is_starting == TRUE) && (priv->starting->len == 0)) if ((priv->is_starting == TRUE) && (priv->starting->len == 0))
sp_local_profiler_finish_startup (self); sysprof_local_profiler_finish_startup (self);
break; break;
} }
@ -684,17 +684,17 @@ sp_local_profiler_source_ready (SpLocalProfiler *self,
} }
static void static void
sp_local_profiler_source_failed (SpLocalProfiler *self, sysprof_local_profiler_source_failed (SysprofLocalProfiler *self,
const GError *reason, const GError *reason,
SpSource *source) SysprofSource *source)
{ {
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_assert (SP_IS_LOCAL_PROFILER (self)); g_assert (SYSPROF_IS_LOCAL_PROFILER (self));
g_assert (reason != NULL); g_assert (reason != NULL);
g_assert (SP_IS_SOURCE (source)); g_assert (SYSPROF_IS_SOURCE (source));
sp_local_profiler_track_completed (self, source); sysprof_local_profiler_track_completed (self, source);
/* Failure emitted out of band */ /* Failure emitted out of band */
if (!priv->is_starting && !priv->is_stopping && !priv->is_running) if (!priv->is_starting && !priv->is_stopping && !priv->is_running)
@ -707,37 +707,37 @@ sp_local_profiler_source_failed (SpLocalProfiler *self,
return; return;
if (priv->is_running) if (priv->is_running)
sp_local_profiler_stop (SP_PROFILER (self)); sysprof_local_profiler_stop (SYSPROF_PROFILER (self));
} }
static void static void
sp_local_profiler_add_source (SpProfiler *profiler, sysprof_local_profiler_add_source (SysprofProfiler *profiler,
SpSource *source) SysprofSource *source)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_return_if_fail (SP_IS_LOCAL_PROFILER (self)); g_return_if_fail (SYSPROF_IS_LOCAL_PROFILER (self));
g_return_if_fail (SP_IS_SOURCE (source)); g_return_if_fail (SYSPROF_IS_SOURCE (source));
g_return_if_fail (priv->is_running == FALSE); g_return_if_fail (priv->is_running == FALSE);
g_return_if_fail (priv->is_starting == FALSE); g_return_if_fail (priv->is_starting == FALSE);
g_return_if_fail (priv->is_stopping == FALSE); g_return_if_fail (priv->is_stopping == FALSE);
g_signal_connect_object (source, g_signal_connect_object (source,
"failed", "failed",
G_CALLBACK (sp_local_profiler_source_failed), G_CALLBACK (sysprof_local_profiler_source_failed),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (source, g_signal_connect_object (source,
"finished", "finished",
G_CALLBACK (sp_local_profiler_source_finished), G_CALLBACK (sysprof_local_profiler_source_finished),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
g_signal_connect_object (source, g_signal_connect_object (source,
"ready", "ready",
G_CALLBACK (sp_local_profiler_source_ready), G_CALLBACK (sysprof_local_profiler_source_ready),
self, self,
G_CONNECT_SWAPPED); G_CONNECT_SWAPPED);
@ -746,13 +746,13 @@ sp_local_profiler_add_source (SpProfiler *profiler,
} }
static void static void
sp_local_profiler_add_pid (SpProfiler *profiler, sysprof_local_profiler_add_pid (SysprofProfiler *profiler,
GPid pid) GPid pid)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_return_if_fail (SP_IS_LOCAL_PROFILER (self)); g_return_if_fail (SYSPROF_IS_LOCAL_PROFILER (self));
g_return_if_fail (pid > -1); g_return_if_fail (pid > -1);
g_return_if_fail (priv->is_starting == FALSE); g_return_if_fail (priv->is_starting == FALSE);
g_return_if_fail (priv->is_stopping == FALSE); g_return_if_fail (priv->is_stopping == FALSE);
@ -762,14 +762,14 @@ sp_local_profiler_add_pid (SpProfiler *profiler,
} }
static void static void
sp_local_profiler_remove_pid (SpProfiler *profiler, sysprof_local_profiler_remove_pid (SysprofProfiler *profiler,
GPid pid) GPid pid)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
guint i; guint i;
g_return_if_fail (SP_IS_LOCAL_PROFILER (self)); g_return_if_fail (SYSPROF_IS_LOCAL_PROFILER (self));
g_return_if_fail (pid > -1); g_return_if_fail (pid > -1);
g_return_if_fail (priv->is_starting == FALSE); g_return_if_fail (priv->is_starting == FALSE);
g_return_if_fail (priv->is_stopping == FALSE); g_return_if_fail (priv->is_stopping == FALSE);
@ -788,13 +788,13 @@ sp_local_profiler_remove_pid (SpProfiler *profiler,
} }
static const GPid * static const GPid *
sp_local_profiler_get_pids (SpProfiler *profiler, sysprof_local_profiler_get_pids (SysprofProfiler *profiler,
guint *n_pids) guint *n_pids)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_return_val_if_fail (SP_IS_LOCAL_PROFILER (self), NULL); g_return_val_if_fail (SYSPROF_IS_LOCAL_PROFILER (self), NULL);
g_return_val_if_fail (n_pids != NULL, NULL); g_return_val_if_fail (n_pids != NULL, NULL);
*n_pids = priv->pids->len; *n_pids = priv->pids->len;
@ -802,27 +802,27 @@ sp_local_profiler_get_pids (SpProfiler *profiler,
return (GPid *)(gpointer)priv->pids->data; return (GPid *)(gpointer)priv->pids->data;
} }
static SpCaptureWriter * static SysprofCaptureWriter *
sp_local_profiler_get_writer (SpProfiler *profiler) sysprof_local_profiler_get_writer (SysprofProfiler *profiler)
{ {
SpLocalProfiler *self = (SpLocalProfiler *)profiler; SysprofLocalProfiler *self = (SysprofLocalProfiler *)profiler;
SpLocalProfilerPrivate *priv = sp_local_profiler_get_instance_private (self); SysprofLocalProfilerPrivate *priv = sysprof_local_profiler_get_instance_private (self);
g_return_val_if_fail (SP_IS_LOCAL_PROFILER (self), NULL); g_return_val_if_fail (SYSPROF_IS_LOCAL_PROFILER (self), NULL);
return priv->writer; return priv->writer;
} }
static void static void
profiler_iface_init (SpProfilerInterface *iface) profiler_iface_init (SysprofProfilerInterface *iface)
{ {
iface->add_pid = sp_local_profiler_add_pid; iface->add_pid = sysprof_local_profiler_add_pid;
iface->add_source = sp_local_profiler_add_source; iface->add_source = sysprof_local_profiler_add_source;
iface->get_pids = sp_local_profiler_get_pids; iface->get_pids = sysprof_local_profiler_get_pids;
iface->get_writer = sp_local_profiler_get_writer; iface->get_writer = sysprof_local_profiler_get_writer;
iface->remove_pid = sp_local_profiler_remove_pid; iface->remove_pid = sysprof_local_profiler_remove_pid;
iface->set_writer = sp_local_profiler_set_writer; iface->set_writer = sysprof_local_profiler_set_writer;
iface->start = sp_local_profiler_start; iface->start = sysprof_local_profiler_start;
iface->stop = sp_local_profiler_stop; iface->stop = sysprof_local_profiler_stop;
iface->stopped = sp_local_profiler_real_stopped; iface->stopped = sysprof_local_profiler_real_stopped;
} }

View File

@ -1,4 +1,4 @@
/* sp-local-profiler.h /* sysprof-local-profiler.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,24 +20,24 @@
#pragma once #pragma once
#include "sp-profiler.h" #include "sysprof-profiler.h"
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_LOCAL_PROFILER (sp_local_profiler_get_type()) #define SYSPROF_TYPE_LOCAL_PROFILER (sysprof_local_profiler_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SpLocalProfiler, sp_local_profiler, SP, LOCAL_PROFILER, GObject) G_DECLARE_DERIVABLE_TYPE (SysprofLocalProfiler, sysprof_local_profiler, SYSPROF, LOCAL_PROFILER, GObject)
struct _SpLocalProfilerClass struct _SysprofLocalProfilerClass
{ {
GObjectClass parent_class; GObjectClass parent_class;
gpointer padding[8]; gpointer padding[8];
}; };
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpProfiler *sp_local_profiler_new (void); SysprofProfiler *sysprof_local_profiler_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-map-lookaside.c /* sysprof-map-lookaside.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -20,32 +20,32 @@
#include "config.h" #include "config.h"
#include "sp-map-lookaside.h" #include "sysprof-map-lookaside.h"
struct _SpMapLookaside struct _SysprofMapLookaside
{ {
GSequence *seq; GSequence *seq;
GStringChunk *chunk; GStringChunk *chunk;
}; };
static gint static gint
sp_map_compare (gconstpointer a, sysprof_map_compare (gconstpointer a,
gconstpointer b, gconstpointer b,
gpointer user_data) gpointer user_data)
{ {
const SpMap *map_a = a; const SysprofMap *map_a = a;
const SpMap *map_b = b; const SysprofMap *map_b = b;
return sp_capture_address_compare (map_a->start, map_b->start); return sysprof_capture_address_compare (map_a->start, map_b->start);
} }
static gint static gint
sp_map_compare_in_range (gconstpointer a, sysprof_map_compare_in_range (gconstpointer a,
gconstpointer b, gconstpointer b,
gpointer user_data) gpointer user_data)
{ {
const SpMap *map_a = a; const SysprofMap *map_a = a;
const SpMap *map_b = b; const SysprofMap *map_b = b;
/* /*
* map_b is the needle for the search. * map_b is the needle for the search.
@ -55,66 +55,66 @@ sp_map_compare_in_range (gconstpointer a,
if ((map_b->start >= map_a->start) && (map_b->start < map_a->end)) if ((map_b->start >= map_a->start) && (map_b->start < map_a->end))
return 0; return 0;
return sp_capture_address_compare (map_a->start, map_b->start); return sysprof_capture_address_compare (map_a->start, map_b->start);
} }
static void static void
sp_map_free (gpointer data) sysprof_map_free (gpointer data)
{ {
SpMap *map = data; SysprofMap *map = data;
g_slice_free (SpMap, map); g_slice_free (SysprofMap, map);
} }
SpMapLookaside * SysprofMapLookaside *
sp_map_lookaside_new (void) sysprof_map_lookaside_new (void)
{ {
SpMapLookaside *ret; SysprofMapLookaside *ret;
ret = g_slice_new (SpMapLookaside); ret = g_slice_new (SysprofMapLookaside);
ret->seq = g_sequence_new (sp_map_free); ret->seq = g_sequence_new (sysprof_map_free);
ret->chunk = g_string_chunk_new (4096); ret->chunk = g_string_chunk_new (4096);
return ret; return ret;
} }
void void
sp_map_lookaside_free (SpMapLookaside *self) sysprof_map_lookaside_free (SysprofMapLookaside *self)
{ {
g_sequence_free (self->seq); g_sequence_free (self->seq);
g_string_chunk_free (self->chunk); g_string_chunk_free (self->chunk);
g_slice_free (SpMapLookaside, self); g_slice_free (SysprofMapLookaside, self);
} }
void void
sp_map_lookaside_insert (SpMapLookaside *self, sysprof_map_lookaside_insert (SysprofMapLookaside *self,
const SpMap *map) const SysprofMap *map)
{ {
SpMap *copy; SysprofMap *copy;
g_assert (self != NULL); g_assert (self != NULL);
g_assert (map != NULL); g_assert (map != NULL);
copy = g_slice_new (SpMap); copy = g_slice_new (SysprofMap);
copy->start = map->start; copy->start = map->start;
copy->end = map->end; copy->end = map->end;
copy->offset = map->offset; copy->offset = map->offset;
copy->inode = map->inode; copy->inode = map->inode;
copy->filename = g_string_chunk_insert_const (self->chunk, map->filename); copy->filename = g_string_chunk_insert_const (self->chunk, map->filename);
g_sequence_insert_sorted (self->seq, copy, sp_map_compare, NULL); g_sequence_insert_sorted (self->seq, copy, sysprof_map_compare, NULL);
} }
const SpMap * const SysprofMap *
sp_map_lookaside_lookup (SpMapLookaside *self, sysprof_map_lookaside_lookup (SysprofMapLookaside *self,
SpCaptureAddress address) SysprofCaptureAddress address)
{ {
SpMap map = { address }; SysprofMap map = { address };
GSequenceIter *iter; GSequenceIter *iter;
g_assert (self != NULL); g_assert (self != NULL);
iter = g_sequence_lookup (self->seq, &map, sp_map_compare_in_range, NULL); iter = g_sequence_lookup (self->seq, &map, sysprof_map_compare_in_range, NULL);
if (iter != NULL) if (iter != NULL)
return g_sequence_get (iter); return g_sequence_get (iter);

View File

@ -1,4 +1,4 @@
/* sp-map-lookaside.h /* sysprof-map-lookaside.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,28 +22,28 @@
#include <glib.h> #include <glib.h>
#include "sp-capture-types.h" #include "sysprof-capture-types.h"
G_BEGIN_DECLS G_BEGIN_DECLS
typedef struct _SpMapLookaside SpMapLookaside; typedef struct _SysprofMapLookaside SysprofMapLookaside;
typedef struct typedef struct
{ {
SpCaptureAddress start; SysprofCaptureAddress start;
SpCaptureAddress end; SysprofCaptureAddress end;
off_t offset; off_t offset;
ino_t inode; ino_t inode;
const gchar *filename; const gchar *filename;
} SpMap; } SysprofMap;
SpMapLookaside *sp_map_lookaside_new (void); SysprofMapLookaside *sysprof_map_lookaside_new (void);
void sp_map_lookaside_insert (SpMapLookaside *self, void sysprof_map_lookaside_insert (SysprofMapLookaside *self,
const SpMap *map); const SysprofMap *map);
const SpMap *sp_map_lookaside_lookup (SpMapLookaside *self, const SysprofMap *sysprof_map_lookaside_lookup (SysprofMapLookaside *self,
SpCaptureAddress address); SysprofCaptureAddress address);
void sp_map_lookaside_free (SpMapLookaside *self); void sysprof_map_lookaside_free (SysprofMapLookaside *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SpMapLookaside, sp_map_lookaside_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofMapLookaside, sysprof_map_lookaside_free)
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-memory-source.c /* sysprof-memory-source.c
* *
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com> * Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
* *
@ -18,7 +18,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
#define G_LOG_DOMAIN "sp-memory-source" #define G_LOG_DOMAIN "sysprof-memory-source"
#include "config.h" #include "config.h"
@ -28,16 +28,16 @@
#include <sysprof-capture.h> #include <sysprof-capture.h>
#include <unistd.h> #include <unistd.h>
#include "sp-memory-source.h" #include "sysprof-memory-source.h"
#define BUF_SIZE 4096 #define BUF_SIZE 4096
struct _SpMemorySource struct _SysprofMemorySource
{ {
GObject parent_instance; GObject parent_instance;
/* Capture writer to deliver samples */ /* Capture writer to deliver samples */
SpCaptureWriter *writer; SysprofCaptureWriter *writer;
/* 4k stat buffer for reading proc */ /* 4k stat buffer for reading proc */
gchar *stat_buf; gchar *stat_buf;
@ -56,13 +56,13 @@ typedef struct
union { union {
struct { struct {
SpCaptureCounterValue used; SysprofCaptureCounterValue used;
gint64 total; gint64 total;
gint64 avail; gint64 avail;
gint64 free; gint64 free;
} sys; } sys;
struct { struct {
SpCaptureCounterValue used; SysprofCaptureCounterValue used;
gint64 size; gint64 size;
gint64 resident; gint64 resident;
gint64 shared; gint64 shared;
@ -74,10 +74,10 @@ typedef struct
guint counter_ids[1]; guint counter_ids[1];
} MemStat; } MemStat;
static void source_iface_init (SpSourceInterface *iface); static void source_iface_init (SysprofSourceInterface *iface);
G_DEFINE_TYPE_WITH_CODE (SpMemorySource, sp_memory_source, G_TYPE_OBJECT, G_DEFINE_TYPE_WITH_CODE (SysprofMemorySource, sysprof_memory_source, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (SP_TYPE_SOURCE, source_iface_init)) G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SOURCE, source_iface_init))
static GHashTable *keys; static GHashTable *keys;
@ -221,13 +221,13 @@ mem_stat_poll (MemStat *st,
static void static void
mem_stat_publish (MemStat *st, mem_stat_publish (MemStat *st,
SpCaptureWriter *writer, SysprofCaptureWriter *writer,
gint64 current_time) gint64 current_time)
{ {
g_assert (st != NULL); g_assert (st != NULL);
g_assert (writer != NULL); g_assert (writer != NULL);
sp_capture_writer_set_counters (writer, sysprof_capture_writer_set_counters (writer,
current_time, current_time,
-1, -1,
st->pid, st->pid,
@ -237,27 +237,27 @@ mem_stat_publish (MemStat *st,
} }
/** /**
* sp_memory_source_new: * sysprof_memory_source_new:
* *
* Create a new #SpMemorySource. * Create a new #SysprofMemorySource.
* *
* Use this source to record basic memory statistics about the system * Use this source to record basic memory statistics about the system
* such as Available, Free, and Total Memory. * such as Available, Free, and Total Memory.
* *
* Returns: (transfer full): a newly created #SpMemorySource * Returns: (transfer full): a newly created #SysprofMemorySource
* Since: 3.32 * Since: 3.32
*/ */
SpSource * SysprofSource *
sp_memory_source_new (void) sysprof_memory_source_new (void)
{ {
return g_object_new (SP_TYPE_MEMORY_SOURCE, NULL); return g_object_new (SYSPROF_TYPE_MEMORY_SOURCE, NULL);
} }
static void static void
sp_memory_source_finalize (GObject *object) sysprof_memory_source_finalize (GObject *object)
{ {
SpMemorySource *self = (SpMemorySource *)object; SysprofMemorySource *self = (SysprofMemorySource *)object;
if (self->timer_source != 0) if (self->timer_source != 0)
{ {
@ -266,18 +266,18 @@ sp_memory_source_finalize (GObject *object)
} }
g_clear_pointer (&self->stat_buf, g_free); g_clear_pointer (&self->stat_buf, g_free);
g_clear_pointer (&self->writer, sp_capture_writer_unref); g_clear_pointer (&self->writer, sysprof_capture_writer_unref);
g_clear_pointer (&self->mem_stats, g_array_unref); g_clear_pointer (&self->mem_stats, g_array_unref);
G_OBJECT_CLASS (sp_memory_source_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_memory_source_parent_class)->finalize (object);
} }
static void static void
sp_memory_source_class_init (SpMemorySourceClass *klass) sysprof_memory_source_class_init (SysprofMemorySourceClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = sp_memory_source_finalize; object_class->finalize = sysprof_memory_source_finalize;
keys = g_hash_table_new (g_str_hash, g_str_equal); keys = g_hash_table_new (g_str_hash, g_str_equal);
@ -290,31 +290,31 @@ sp_memory_source_class_init (SpMemorySourceClass *klass)
} }
static void static void
sp_memory_source_init (SpMemorySource *self) sysprof_memory_source_init (SysprofMemorySource *self)
{ {
self->stat_buf = g_malloc (BUF_SIZE); self->stat_buf = g_malloc (BUF_SIZE);
self->mem_stats = g_array_new (FALSE, FALSE, sizeof (MemStat)); self->mem_stats = g_array_new (FALSE, FALSE, sizeof (MemStat));
} }
static void static void
sp_memory_source_set_writer (SpSource *source, sysprof_memory_source_set_writer (SysprofSource *source,
SpCaptureWriter *writer) SysprofCaptureWriter *writer)
{ {
SpMemorySource *self = (SpMemorySource *)source; SysprofMemorySource *self = (SysprofMemorySource *)source;
g_assert (SP_IS_SOURCE (self)); g_assert (SYSPROF_IS_SOURCE (self));
g_assert (writer != NULL); g_assert (writer != NULL);
g_assert (self->writer == NULL); g_assert (self->writer == NULL);
self->writer = sp_capture_writer_ref (writer); self->writer = sysprof_capture_writer_ref (writer);
} }
static void static void
sp_memory_source_prepare (SpSource *source) sysprof_memory_source_prepare (SysprofSource *source)
{ {
SpMemorySource *self = (SpMemorySource *)source; SysprofMemorySource *self = (SysprofMemorySource *)source;
g_assert (SP_IS_MEMORY_SOURCE (self)); g_assert (SYSPROF_IS_MEMORY_SOURCE (self));
g_assert (self->writer != NULL); g_assert (self->writer != NULL);
/* If no pids are registered, setup a system memory stat */ /* If no pids are registered, setup a system memory stat */
@ -334,25 +334,25 @@ sp_memory_source_prepare (SpSource *source)
for (guint i = 0; i < self->mem_stats->len; i++) for (guint i = 0; i < self->mem_stats->len; i++)
{ {
MemStat *st = &g_array_index (self->mem_stats, MemStat, i); MemStat *st = &g_array_index (self->mem_stats, MemStat, i);
SpCaptureCounter counters[5]; SysprofCaptureCounter counters[5];
guint base; guint base;
mem_stat_open (st); mem_stat_open (st);
if (st->pid == -1) if (st->pid == -1)
{ {
base = sp_capture_writer_request_counter (self->writer, 1); base = sysprof_capture_writer_request_counter (self->writer, 1);
g_strlcpy (counters[0].category, "Memory", sizeof counters[0].category); g_strlcpy (counters[0].category, "Memory", sizeof counters[0].category);
g_strlcpy (counters[0].name, "Used", sizeof counters[0].name); g_strlcpy (counters[0].name, "Used", sizeof counters[0].name);
g_strlcpy (counters[0].description, "Memory used by system", sizeof counters[0].description); g_strlcpy (counters[0].description, "Memory used by system", sizeof counters[0].description);
counters[0].id = st->counter_ids[0] = base; counters[0].id = st->counter_ids[0] = base;
counters[0].type = SP_CAPTURE_COUNTER_DOUBLE; counters[0].type = SYSPROF_CAPTURE_COUNTER_DOUBLE;
counters[0].value.vdbl = 0; counters[0].value.vdbl = 0;
sp_capture_writer_define_counters (self->writer, sysprof_capture_writer_define_counters (self->writer,
SP_CAPTURE_CURRENT_TIME, SYSPROF_CAPTURE_CURRENT_TIME,
-1, -1,
-1, -1,
counters, counters,
@ -360,18 +360,18 @@ sp_memory_source_prepare (SpSource *source)
} }
else else
{ {
base = sp_capture_writer_request_counter (self->writer, 1); base = sysprof_capture_writer_request_counter (self->writer, 1);
g_strlcpy (counters[0].category, "Memory", sizeof counters[0].category); g_strlcpy (counters[0].category, "Memory", sizeof counters[0].category);
g_strlcpy (counters[0].name, "Used", sizeof counters[0].name); g_strlcpy (counters[0].name, "Used", sizeof counters[0].name);
g_strlcpy (counters[0].description, "Memory used by process", sizeof counters[0].description); g_strlcpy (counters[0].description, "Memory used by process", sizeof counters[0].description);
counters[0].id = st->counter_ids[0] = base; counters[0].id = st->counter_ids[0] = base;
counters[0].type = SP_CAPTURE_COUNTER_DOUBLE; counters[0].type = SYSPROF_CAPTURE_COUNTER_DOUBLE;
counters[0].value.vdbl = 0; counters[0].value.vdbl = 0;
sp_capture_writer_define_counters (self->writer, sysprof_capture_writer_define_counters (self->writer,
SP_CAPTURE_CURRENT_TIME, SYSPROF_CAPTURE_CURRENT_TIME,
-1, -1,
st->pid, st->pid,
counters, counters,
@ -379,18 +379,18 @@ sp_memory_source_prepare (SpSource *source)
} }
} }
sp_source_emit_ready (SP_SOURCE (self)); sysprof_source_emit_ready (SYSPROF_SOURCE (self));
} }
static gboolean static gboolean
sp_memory_source_timer_cb (SpMemorySource *self) sysprof_memory_source_timer_cb (SysprofMemorySource *self)
{ {
gint64 current_time; gint64 current_time;
g_assert (SP_IS_MEMORY_SOURCE (self)); g_assert (SYSPROF_IS_MEMORY_SOURCE (self));
g_assert (self->writer != NULL); g_assert (self->writer != NULL);
current_time = sp_clock_get_current_time (); current_time = sysprof_clock_get_current_time ();
for (guint i = 0; i < self->mem_stats->len; i++) for (guint i = 0; i < self->mem_stats->len; i++)
{ {
@ -404,26 +404,26 @@ sp_memory_source_timer_cb (SpMemorySource *self)
} }
static void static void
sp_memory_source_start (SpSource *source) sysprof_memory_source_start (SysprofSource *source)
{ {
SpMemorySource *self = (SpMemorySource *)source; SysprofMemorySource *self = (SysprofMemorySource *)source;
g_assert (SP_IS_MEMORY_SOURCE (self)); g_assert (SYSPROF_IS_MEMORY_SOURCE (self));
/* Poll 4x/sec for memory stats */ /* Poll 4x/sec for memory stats */
self->timer_source = g_timeout_add_full (G_PRIORITY_HIGH, self->timer_source = g_timeout_add_full (G_PRIORITY_HIGH,
1000 / 4, 1000 / 4,
(GSourceFunc)sp_memory_source_timer_cb, (GSourceFunc)sysprof_memory_source_timer_cb,
self, self,
NULL); NULL);
} }
static void static void
sp_memory_source_stop (SpSource *source) sysprof_memory_source_stop (SysprofSource *source)
{ {
SpMemorySource *self = (SpMemorySource *)source; SysprofMemorySource *self = (SysprofMemorySource *)source;
g_assert (SP_IS_MEMORY_SOURCE (self)); g_assert (SYSPROF_IS_MEMORY_SOURCE (self));
if (self->timer_source != 0) if (self->timer_source != 0)
{ {
@ -438,17 +438,17 @@ sp_memory_source_stop (SpSource *source)
mem_stat_close (st); mem_stat_close (st);
} }
sp_source_emit_finished (source); sysprof_source_emit_finished (source);
} }
static void static void
sp_memory_source_add_pid (SpSource *source, sysprof_memory_source_add_pid (SysprofSource *source,
GPid pid) GPid pid)
{ {
SpMemorySource *self = (SpMemorySource *)source; SysprofMemorySource *self = (SysprofMemorySource *)source;
MemStat st = {0}; MemStat st = {0};
g_assert (SP_IS_MEMORY_SOURCE (self)); g_assert (SYSPROF_IS_MEMORY_SOURCE (self));
st.pid = pid; st.pid = pid;
st.stat_fd = -1; st.stat_fd = -1;
@ -457,11 +457,11 @@ sp_memory_source_add_pid (SpSource *source,
} }
static void static void
source_iface_init (SpSourceInterface *iface) source_iface_init (SysprofSourceInterface *iface)
{ {
iface->set_writer = sp_memory_source_set_writer; iface->set_writer = sysprof_memory_source_set_writer;
iface->prepare = sp_memory_source_prepare; iface->prepare = sysprof_memory_source_prepare;
iface->start = sp_memory_source_start; iface->start = sysprof_memory_source_start;
iface->stop = sp_memory_source_stop; iface->stop = sysprof_memory_source_stop;
iface->add_pid = sp_memory_source_add_pid; iface->add_pid = sysprof_memory_source_add_pid;
} }

View File

@ -1,4 +1,4 @@
/* sp-memory-source.h /* sysprof-memory-source.h
* *
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com> * Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
* *
@ -22,16 +22,16 @@
#include "sysprof-version-macros.h" #include "sysprof-version-macros.h"
#include "sp-source.h" #include "sysprof-source.h"
G_BEGIN_DECLS G_BEGIN_DECLS
#define SP_TYPE_MEMORY_SOURCE (sp_memory_source_get_type()) #define SYSPROF_TYPE_MEMORY_SOURCE (sysprof_memory_source_get_type())
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
G_DECLARE_FINAL_TYPE (SpMemorySource, sp_memory_source, SP, MEMORY_SOURCE, GObject) G_DECLARE_FINAL_TYPE (SysprofMemorySource, sysprof_memory_source, SYSPROF, MEMORY_SOURCE, GObject)
SYSPROF_AVAILABLE_IN_ALL SYSPROF_AVAILABLE_IN_ALL
SpSource *sp_memory_source_new (void); SysprofSource *sysprof_memory_source_new (void);
G_END_DECLS G_END_DECLS

View File

@ -1,4 +1,4 @@
/* sp-perf-counter.c /* sysprof-perf-counter.c
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -52,7 +52,7 @@
#include <sys/syscall.h> #include <sys/syscall.h>
#include <unistd.h> #include <unistd.h>
#include "sp-perf-counter.h" #include "sysprof-perf-counter.h"
/* /*
* Number of pages to map for the ring buffer. We map one additional buffer * Number of pages to map for the ring buffer. We map one additional buffer
@ -61,7 +61,7 @@
#define N_PAGES 32 #define N_PAGES 32
/* /*
* This represents a stream coming to us from perf. All SpPerfCounterInfo * This represents a stream coming to us from perf. All SysprofPerfCounterInfo
* share a single GSource used for watching incoming G_IO_IN requests. * share a single GSource used for watching incoming G_IO_IN requests.
* The map is the mmap() zone we are using as a ring buffer for communicating * The map is the mmap() zone we are using as a ring buffer for communicating
* with perf. The rest is for managing the ring buffer. * with perf. The rest is for managing the ring buffer.
@ -75,9 +75,9 @@ typedef struct
guint64 tail; guint64 tail;
gint cpu; gint cpu;
guint in_callback : 1; guint in_callback : 1;
} SpPerfCounterInfo; } SysprofPerfCounterInfo;
struct _SpPerfCounter struct _SysprofPerfCounter
{ {
volatile gint ref_count; volatile gint ref_count;
@ -94,7 +94,7 @@ struct _SpPerfCounter
GSource *source; GSource *source;
/* /*
* An array of SpPerfCounterInfo, indicating all of our open * An array of SysprofPerfCounterInfo, indicating all of our open
* perf stream.s * perf stream.s
*/ */
GPtrArray *info; GPtrArray *info;
@ -102,7 +102,7 @@ struct _SpPerfCounter
/* /*
* The callback to execute for every discovered perf event. * The callback to execute for every discovered perf event.
*/ */
SpPerfCounterCallback callback; SysprofPerfCounterCallback callback;
gpointer callback_data; gpointer callback_data;
GDestroyNotify callback_data_destroy; GDestroyNotify callback_data_destroy;
@ -115,13 +115,13 @@ struct _SpPerfCounter
typedef struct typedef struct
{ {
GSource source; GSource source;
SpPerfCounter *counter; SysprofPerfCounter *counter;
} PerfGSource; } PerfGSource;
G_DEFINE_BOXED_TYPE (SpPerfCounter, G_DEFINE_BOXED_TYPE (SysprofPerfCounter,
sp_perf_counter, sysprof_perf_counter,
(GBoxedCopyFunc)sp_perf_counter_ref, (GBoxedCopyFunc)sysprof_perf_counter_ref,
(GBoxedFreeFunc)sp_perf_counter_unref) (GBoxedFreeFunc)sysprof_perf_counter_unref)
#ifdef ENABLE_POLKIT #ifdef ENABLE_POLKIT
static GDBusConnection *shared_conn; static GDBusConnection *shared_conn;
@ -140,7 +140,7 @@ static GSourceFuncs source_funcs = {
}; };
static void static void
sp_perf_counter_info_free (SpPerfCounterInfo *info) sysprof_perf_counter_info_free (SysprofPerfCounterInfo *info)
{ {
if (info->map) if (info->map)
{ {
@ -159,11 +159,11 @@ sp_perf_counter_info_free (SpPerfCounterInfo *info)
info->fd = 0; info->fd = 0;
} }
g_slice_free (SpPerfCounterInfo, info); g_slice_free (SysprofPerfCounterInfo, info);
} }
static void static void
sp_perf_counter_finalize (SpPerfCounter *self) sysprof_perf_counter_finalize (SysprofPerfCounter *self)
{ {
guint i; guint i;
@ -172,12 +172,12 @@ sp_perf_counter_finalize (SpPerfCounter *self)
for (i = 0; i < self->info->len; i++) for (i = 0; i < self->info->len; i++)
{ {
SpPerfCounterInfo *info = g_ptr_array_index (self->info, i); SysprofPerfCounterInfo *info = g_ptr_array_index (self->info, i);
if (info->fdtag) if (info->fdtag)
g_source_remove_unix_fd (self->source, info->fdtag); g_source_remove_unix_fd (self->source, info->fdtag);
sp_perf_counter_info_free (info); sysprof_perf_counter_info_free (info);
} }
if (self->callback_data_destroy) if (self->callback_data_destroy)
@ -186,21 +186,21 @@ sp_perf_counter_finalize (SpPerfCounter *self)
g_clear_pointer (&self->source, g_source_destroy); g_clear_pointer (&self->source, g_source_destroy);
g_clear_pointer (&self->info, g_ptr_array_unref); g_clear_pointer (&self->info, g_ptr_array_unref);
g_clear_pointer (&self->context, g_main_context_unref); g_clear_pointer (&self->context, g_main_context_unref);
g_slice_free (SpPerfCounter, self); g_slice_free (SysprofPerfCounter, self);
} }
void void
sp_perf_counter_unref (SpPerfCounter *self) sysprof_perf_counter_unref (SysprofPerfCounter *self)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
g_return_if_fail (self->ref_count > 0); g_return_if_fail (self->ref_count > 0);
if (g_atomic_int_dec_and_test (&self->ref_count)) if (g_atomic_int_dec_and_test (&self->ref_count))
sp_perf_counter_finalize (self); sysprof_perf_counter_finalize (self);
} }
SpPerfCounter * SysprofPerfCounter *
sp_perf_counter_ref (SpPerfCounter *self) sysprof_perf_counter_ref (SysprofPerfCounter *self)
{ {
g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (self != NULL, NULL);
g_return_val_if_fail (self->ref_count > 0, NULL); g_return_val_if_fail (self->ref_count > 0, NULL);
@ -211,8 +211,8 @@ sp_perf_counter_ref (SpPerfCounter *self)
} }
static void static void
sp_perf_counter_flush (SpPerfCounter *self, sysprof_perf_counter_flush (SysprofPerfCounter *self,
SpPerfCounterInfo *info) SysprofPerfCounterInfo *info)
{ {
guint64 head; guint64 head;
guint64 tail; guint64 tail;
@ -282,7 +282,7 @@ sp_perf_counter_flush (SpPerfCounter *self,
if (self->callback != NULL) if (self->callback != NULL)
{ {
info->in_callback = TRUE; info->in_callback = TRUE;
self->callback ((SpPerfCounterEvent *)header, info->cpu, self->callback_data); self->callback ((SysprofPerfCounterEvent *)header, info->cpu, self->callback_data);
info->in_callback = FALSE; info->in_callback = FALSE;
} }
@ -296,9 +296,9 @@ sp_perf_counter_flush (SpPerfCounter *self,
} }
static gboolean static gboolean
sp_perf_counter_dispatch (gpointer user_data) sysprof_perf_counter_dispatch (gpointer user_data)
{ {
SpPerfCounter *self = user_data; SysprofPerfCounter *self = user_data;
guint i; guint i;
g_assert (self != NULL); g_assert (self != NULL);
@ -306,17 +306,17 @@ sp_perf_counter_dispatch (gpointer user_data)
for (i = 0; i < self->info->len; i++) for (i = 0; i < self->info->len; i++)
{ {
SpPerfCounterInfo *info = g_ptr_array_index (self->info, i); SysprofPerfCounterInfo *info = g_ptr_array_index (self->info, i);
sp_perf_counter_flush (self, info); sysprof_perf_counter_flush (self, info);
} }
return G_SOURCE_CONTINUE; return G_SOURCE_CONTINUE;
} }
static void static void
sp_perf_counter_enable_info (SpPerfCounter *self, sysprof_perf_counter_enable_info (SysprofPerfCounter *self,
SpPerfCounterInfo *info) SysprofPerfCounterInfo *info)
{ {
g_assert (self != NULL); g_assert (self != NULL);
g_assert (info != NULL); g_assert (info != NULL);
@ -327,22 +327,22 @@ sp_perf_counter_enable_info (SpPerfCounter *self,
g_source_modify_unix_fd (self->source, info->fdtag, G_IO_IN); g_source_modify_unix_fd (self->source, info->fdtag, G_IO_IN);
} }
SpPerfCounter * SysprofPerfCounter *
sp_perf_counter_new (GMainContext *context) sysprof_perf_counter_new (GMainContext *context)
{ {
SpPerfCounter *ret; SysprofPerfCounter *ret;
if (context == NULL) if (context == NULL)
context = g_main_context_default (); context = g_main_context_default ();
ret = g_slice_new0 (SpPerfCounter); ret = g_slice_new0 (SysprofPerfCounter);
ret->ref_count = 1; ret->ref_count = 1;
ret->info = g_ptr_array_new (); ret->info = g_ptr_array_new ();
ret->context = g_main_context_ref (context); ret->context = g_main_context_ref (context);
ret->source = g_source_new (&source_funcs, sizeof (PerfGSource)); ret->source = g_source_new (&source_funcs, sizeof (PerfGSource));
((PerfGSource *)ret->source)->counter = ret; ((PerfGSource *)ret->source)->counter = ret;
g_source_set_callback (ret->source, sp_perf_counter_dispatch, ret, NULL); g_source_set_callback (ret->source, sysprof_perf_counter_dispatch, ret, NULL);
g_source_set_name (ret->source, "[perf]"); g_source_set_name (ret->source, "[perf]");
g_source_attach (ret->source, context); g_source_attach (ret->source, context);
@ -350,7 +350,7 @@ sp_perf_counter_new (GMainContext *context)
} }
void void
sp_perf_counter_close (SpPerfCounter *self, sysprof_perf_counter_close (SysprofPerfCounter *self,
gint fd) gint fd)
{ {
guint i; guint i;
@ -360,25 +360,25 @@ sp_perf_counter_close (SpPerfCounter *self,
for (i = 0; i < self->info->len; i++) for (i = 0; i < self->info->len; i++)
{ {
SpPerfCounterInfo *info = g_ptr_array_index (self->info, i); SysprofPerfCounterInfo *info = g_ptr_array_index (self->info, i);
if (info->fd == fd) if (info->fd == fd)
{ {
g_ptr_array_remove_index (self->info, i); g_ptr_array_remove_index (self->info, i);
if (self->source) if (self->source)
g_source_remove_unix_fd (self->source, info->fdtag); g_source_remove_unix_fd (self->source, info->fdtag);
sp_perf_counter_info_free (info); sysprof_perf_counter_info_free (info);
return; return;
} }
} }
} }
static void static void
sp_perf_counter_add_info (SpPerfCounter *self, sysprof_perf_counter_add_info (SysprofPerfCounter *self,
int fd, int fd,
int cpu) int cpu)
{ {
SpPerfCounterInfo *info; SysprofPerfCounterInfo *info;
guint8 *map; guint8 *map;
gsize map_size; gsize map_size;
@ -394,7 +394,7 @@ sp_perf_counter_add_info (SpPerfCounter *self,
return; return;
} }
info = g_slice_new0 (SpPerfCounterInfo); info = g_slice_new0 (SysprofPerfCounterInfo);
info->fd = fd; info->fd = fd;
info->map = (gpointer)map; info->map = (gpointer)map;
info->data = map + getpagesize (); info->data = map + getpagesize ();
@ -406,17 +406,17 @@ sp_perf_counter_add_info (SpPerfCounter *self,
info->fdtag = g_source_add_unix_fd (self->source, info->fd, G_IO_ERR); info->fdtag = g_source_add_unix_fd (self->source, info->fd, G_IO_ERR);
if (self->enabled) if (self->enabled)
sp_perf_counter_enable_info (self, info); sysprof_perf_counter_enable_info (self, info);
} }
void void
sp_perf_counter_take_fd (SpPerfCounter *self, sysprof_perf_counter_take_fd (SysprofPerfCounter *self,
int fd) int fd)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
g_return_if_fail (fd > -1); g_return_if_fail (fd > -1);
sp_perf_counter_add_info (self, fd, -1); sysprof_perf_counter_add_info (self, fd, -1);
} }
#ifdef ENABLE_POLKIT #ifdef ENABLE_POLKIT
@ -504,7 +504,7 @@ get_authorized_proxy (void)
} }
static void static void
sp_perf_counter_ping_cb (GObject *object, sysprof_perf_counter_ping_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
@ -526,7 +526,7 @@ sp_perf_counter_ping_cb (GObject *object,
} }
static void static void
sp_perf_counter_acquire_cb (GObject *object, sysprof_perf_counter_acquire_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
@ -563,12 +563,12 @@ sp_perf_counter_acquire_cb (GObject *object,
G_DBUS_CALL_FLAGS_NONE, G_DBUS_CALL_FLAGS_NONE,
5000, 5000,
g_task_get_cancellable (task), g_task_get_cancellable (task),
sp_perf_counter_ping_cb, sysprof_perf_counter_ping_cb,
g_object_ref (task)); g_object_ref (task));
} }
static void static void
sp_perf_counter_permission_cb (GObject *object, sysprof_perf_counter_permission_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
@ -587,14 +587,14 @@ sp_perf_counter_permission_cb (GObject *object,
g_permission_acquire_async (permission, g_permission_acquire_async (permission,
g_task_get_cancellable (task), g_task_get_cancellable (task),
sp_perf_counter_acquire_cb, sysprof_perf_counter_acquire_cb,
g_object_ref (task)); g_object_ref (task));
g_object_unref (permission); g_object_unref (permission);
} }
static void static void
sp_perf_counter_get_bus_cb (GObject *object, sysprof_perf_counter_get_bus_cb (GObject *object,
GAsyncResult *result, GAsyncResult *result,
gpointer user_data) gpointer user_data)
{ {
@ -621,7 +621,7 @@ sp_perf_counter_get_bus_cb (GObject *object,
polkit_permission_new ("org.gnome.sysprof2.perf-event-open", polkit_permission_new ("org.gnome.sysprof2.perf-event-open",
subject, subject,
g_task_get_cancellable (task), g_task_get_cancellable (task),
sp_perf_counter_permission_cb, sysprof_perf_counter_permission_cb,
g_object_ref (task)); g_object_ref (task));
g_object_unref (subject); g_object_unref (subject);
@ -630,7 +630,7 @@ sp_perf_counter_get_bus_cb (GObject *object,
#endif #endif
void void
sp_perf_counter_authorize_async (GCancellable *cancellable, sysprof_perf_counter_authorize_async (GCancellable *cancellable,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data) gpointer user_data)
{ {
@ -643,7 +643,7 @@ sp_perf_counter_authorize_async (GCancellable *cancellable,
#ifdef ENABLE_POLKIT #ifdef ENABLE_POLKIT
g_bus_get (G_BUS_TYPE_SYSTEM, g_bus_get (G_BUS_TYPE_SYSTEM,
cancellable, cancellable,
sp_perf_counter_get_bus_cb, sysprof_perf_counter_get_bus_cb,
g_object_ref (task)); g_object_ref (task));
#else #else
g_task_return_new_error (task, g_task_return_new_error (task,
@ -654,7 +654,7 @@ sp_perf_counter_authorize_async (GCancellable *cancellable,
} }
gboolean gboolean
sp_perf_counter_authorize_finish (GAsyncResult *result, sysprof_perf_counter_authorize_finish (GAsyncResult *result,
GError **error) GError **error)
{ {
g_assert (G_IS_TASK (result)); g_assert (G_IS_TASK (result));
@ -663,7 +663,7 @@ sp_perf_counter_authorize_finish (GAsyncResult *result,
} }
gint gint
sp_perf_counter_open (SpPerfCounter *self, sysprof_perf_counter_open (SysprofPerfCounter *self,
struct perf_event_attr *attr, struct perf_event_attr *attr,
GPid pid, GPid pid,
gint cpu, gint cpu,
@ -689,7 +689,7 @@ sp_perf_counter_open (SpPerfCounter *self,
*/ */
if (-1 != (ret = syscall (__NR_perf_event_open, attr, pid, cpu, group_fd, flags))) if (-1 != (ret = syscall (__NR_perf_event_open, attr, pid, cpu, group_fd, flags)))
{ {
sp_perf_counter_take_fd (self, ret); sysprof_perf_counter_take_fd (self, ret);
return ret; return ret;
} }
@ -782,15 +782,15 @@ sp_perf_counter_open (SpPerfCounter *self,
return -1; return -1;
} }
sp_perf_counter_take_fd (self, ret); sysprof_perf_counter_take_fd (self, ret);
#endif #endif
return ret; return ret;
} }
void void
sp_perf_counter_set_callback (SpPerfCounter *self, sysprof_perf_counter_set_callback (SysprofPerfCounter *self,
SpPerfCounterCallback callback, SysprofPerfCounterCallback callback,
gpointer callback_data, gpointer callback_data,
GDestroyNotify callback_data_destroy) GDestroyNotify callback_data_destroy)
{ {
@ -805,7 +805,7 @@ sp_perf_counter_set_callback (SpPerfCounter *self,
} }
void void
sp_perf_counter_enable (SpPerfCounter *self) sysprof_perf_counter_enable (SysprofPerfCounter *self)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
@ -815,15 +815,15 @@ sp_perf_counter_enable (SpPerfCounter *self)
for (i = 0; i < self->info->len; i++) for (i = 0; i < self->info->len; i++)
{ {
SpPerfCounterInfo *info = g_ptr_array_index (self->info, i); SysprofPerfCounterInfo *info = g_ptr_array_index (self->info, i);
sp_perf_counter_enable_info (self, info); sysprof_perf_counter_enable_info (self, info);
} }
} }
} }
void void
sp_perf_counter_disable (SpPerfCounter *self) sysprof_perf_counter_disable (SysprofPerfCounter *self)
{ {
g_return_if_fail (self != NULL); g_return_if_fail (self != NULL);
@ -833,13 +833,13 @@ sp_perf_counter_disable (SpPerfCounter *self)
for (i = 0; i < self->info->len; i++) for (i = 0; i < self->info->len; i++)
{ {
SpPerfCounterInfo *info = g_ptr_array_index (self->info, i); SysprofPerfCounterInfo *info = g_ptr_array_index (self->info, i);
if (0 != ioctl (info->fd, PERF_EVENT_IOC_DISABLE)) if (0 != ioctl (info->fd, PERF_EVENT_IOC_DISABLE))
g_warning ("Failed to disable counters"); g_warning ("Failed to disable counters");
if (!info->in_callback) if (!info->in_callback)
sp_perf_counter_flush (self, info); sysprof_perf_counter_flush (self, info);
g_source_modify_unix_fd (self->source, info->fdtag, G_IO_ERR); g_source_modify_unix_fd (self->source, info->fdtag, G_IO_ERR);
} }

View File

@ -1,4 +1,4 @@
/* sp-perf-counter.h /* sysprof-perf-counter.h
* *
* Copyright 2016-2019 Christian Hergert <chergert@redhat.com> * Copyright 2016-2019 Christian Hergert <chergert@redhat.com>
* *
@ -34,9 +34,9 @@ G_BEGIN_DECLS
* These structs are the particular layouts that sysprof requests. * These structs are the particular layouts that sysprof requests.
*/ */
#define SP_TYPE_PERF_COUNTER (sp_perf_counter_get_type()) #define SYSPROF_TYPE_PERF_COUNTER (sysprof_perf_counter_get_type())
typedef struct _SpPerfCounter SpPerfCounter; typedef struct _SysprofPerfCounter SysprofPerfCounter;
#pragma pack(push, 1) #pragma pack(push, 1)
@ -48,7 +48,7 @@ typedef struct
guint32 tid; guint32 tid;
guint32 ptid; guint32 ptid;
guint64 time; guint64 time;
} SpPerfCounterEventFork; } SysprofPerfCounterEventFork;
typedef struct typedef struct
{ {
@ -56,7 +56,7 @@ typedef struct
guint32 pid; guint32 pid;
guint32 tid; guint32 tid;
gchar comm[0]; gchar comm[0];
} SpPerfCounterEventComm; } SysprofPerfCounterEventComm;
typedef struct typedef struct
{ {
@ -66,7 +66,7 @@ typedef struct
guint32 tid; guint32 tid;
guint32 ptid; guint32 ptid;
guint64 time; guint64 time;
} SpPerfCounterEventExit; } SysprofPerfCounterEventExit;
typedef struct typedef struct
{ {
@ -77,7 +77,7 @@ typedef struct
guint64 len; guint64 len;
guint64 pgoff; guint64 pgoff;
char filename[0]; char filename[0];
} SpPerfCounterEventMmap; } SysprofPerfCounterEventMmap;
typedef struct typedef struct
{ {
@ -89,7 +89,7 @@ typedef struct
guint64 time; guint64 time;
guint64 n_ips; guint64 n_ips;
guint64 ips[0]; guint64 ips[0];
} SpPerfCounterEventCallchain; } SysprofPerfCounterEventCallchain;
typedef struct typedef struct
{ {
@ -101,53 +101,53 @@ typedef struct
guint64 time; guint64 time;
guint32 raw_size; guint32 raw_size;
guchar raw[]; guchar raw[];
} SpPerfCounterEventTracepoint; } SysprofPerfCounterEventTracepoint;
typedef union typedef union
{ {
struct perf_event_header header; struct perf_event_header header;
guint8 raw[0]; guint8 raw[0];
SpPerfCounterEventFork fork; SysprofPerfCounterEventFork fork;
SpPerfCounterEventComm comm; SysprofPerfCounterEventComm comm;
SpPerfCounterEventExit exit; SysprofPerfCounterEventExit exit;
SpPerfCounterEventMmap mmap; SysprofPerfCounterEventMmap mmap;
SpPerfCounterEventCallchain callchain; SysprofPerfCounterEventCallchain callchain;
SpPerfCounterEventTracepoint tracepoint; SysprofPerfCounterEventTracepoint tracepoint;
} SpPerfCounterEvent; } SysprofPerfCounterEvent;
#pragma pack(pop) #pragma pack(pop)
typedef void (*SpPerfCounterCallback) (SpPerfCounterEvent *event, typedef void (*SysprofPerfCounterCallback) (SysprofPerfCounterEvent *event,
guint cpu, guint cpu,
gpointer user_data); gpointer user_data);
void sp_perf_counter_authorize_async (GCancellable *cancellable, void sysprof_perf_counter_authorize_async (GCancellable *cancellable,
GAsyncReadyCallback callback, GAsyncReadyCallback callback,
gpointer user_data); gpointer user_data);
gboolean sp_perf_counter_authorize_finish (GAsyncResult *result, gboolean sysprof_perf_counter_authorize_finish (GAsyncResult *result,
GError **error); GError **error);
GType sp_perf_counter_get_type (void); GType sysprof_perf_counter_get_type (void);
SpPerfCounter *sp_perf_counter_new (GMainContext *context); SysprofPerfCounter *sysprof_perf_counter_new (GMainContext *context);
void sp_perf_counter_set_callback (SpPerfCounter *self, void sysprof_perf_counter_set_callback (SysprofPerfCounter *self,
SpPerfCounterCallback callback, SysprofPerfCounterCallback callback,
gpointer callback_data, gpointer callback_data,
GDestroyNotify callback_data_destroy); GDestroyNotify callback_data_destroy);
void sp_perf_counter_add_pid (SpPerfCounter *self, void sysprof_perf_counter_add_pid (SysprofPerfCounter *self,
GPid pid); GPid pid);
gint sp_perf_counter_open (SpPerfCounter *self, gint sysprof_perf_counter_open (SysprofPerfCounter *self,
struct perf_event_attr *attr, struct perf_event_attr *attr,
GPid pid, GPid pid,
gint cpu, gint cpu,
gint group_fd, gint group_fd,
gulong flags); gulong flags);
void sp_perf_counter_take_fd (SpPerfCounter *self, void sysprof_perf_counter_take_fd (SysprofPerfCounter *self,
int fd); int fd);
void sp_perf_counter_enable (SpPerfCounter *self); void sysprof_perf_counter_enable (SysprofPerfCounter *self);
void sp_perf_counter_disable (SpPerfCounter *self); void sysprof_perf_counter_disable (SysprofPerfCounter *self);
void sp_perf_counter_close (SpPerfCounter *self, void sysprof_perf_counter_close (SysprofPerfCounter *self,
gint fd); gint fd);
SpPerfCounter *sp_perf_counter_ref (SpPerfCounter *self); SysprofPerfCounter *sysprof_perf_counter_ref (SysprofPerfCounter *self);
void sp_perf_counter_unref (SpPerfCounter *self); void sysprof_perf_counter_unref (SysprofPerfCounter *self);
G_END_DECLS G_END_DECLS

Some files were not shown because too many files have changed in this diff Show More