Commit Graph

56 Commits

Author SHA1 Message Date
8967b2db33 details-page: Use a GtkColumnView instead of a GtkTreeView
Remove the use of the now deprecated GtkTreeView and allow the colums to be sorted.
2023-01-17 15:16:56 +01:00
6d50f3ca7b meson: Override dependencies to improve usage as a subproject
With this change, sysprof can be consumed as a subproject without
making any changes to the build files of a project. All you need to do
is provide a wrap file with a `[provide]` section:

https://mesonbuild.com/Wrap-dependency-system-manual.html#provide-section

This is also necessary because otherwise projects need to hard-code
the subproject name, which might be `sysprof` when using `wrap-git` or
`sysprof-3.46.0` when using `wrap-file` (to build from a release
tarball). This can cause conflicts between different subprojects that
consume sysprof differently.

Other projects like glib, cairo, pango, etc already do this.
2022-12-18 10:04:00 +05:30
3d02ea81fa libsysprof-ui: remove EggThreeGrid from build 2022-07-22 14:50:14 -07:00
757d36ae8e Cleanup the build a bit
Makes the Meson build a little bit better and cleans up some of the
formatting.
2022-05-25 14:07:02 -05:00
5e67104823 egg: bring multi-paned ported to GTK 4
This is out of libpanel, which already has it but with the dock stuff
removed (more like DzlMultiPaned). We probably still need some work to
handle natural allocation from children.
2022-04-01 13:15:49 -07:00
b0cfa7632e libsysprof-ui: move ui headers 2022-04-01 13:15:49 -07:00
6ca31d135b build: use libadwaita from library 2022-04-01 13:15:49 -07:00
ddb8db5872 cellrendererpercent: subclass private progress implementation
We might get this subclassable in GTK soon, but until then just subclass
so we can move on and port more things.
2022-04-01 13:14:51 -07:00
5e55f5f2cc build: switch build to GTK 4 2022-04-01 13:14:51 -07:00
b4c8530019 build: remove libdazzle 2022-04-01 13:14:51 -07:00
48d8b3da8e libsysprof-ui: add EggThreeGrid
So we can drop our use from libdazzle. We'll need to port this to GTK 4
but it shouldn't be too bad.
2022-04-01 13:14:51 -07:00
e02785ba23 start on new resolver for paths 2021-09-14 19:53:46 -07:00
f0303f4b68 meson: Fix pkgconfig generation
This fix error when gio is a subproject, when there is pc file
assotiated for objects in libraries_private meson automatically promote
them to requires.

Also remove some values that are already the default.
2020-10-01 10:15:38 -04:00
04b6fdfcbe libsysprof, libsysprof-ui: Generate pkg-config dependencies
Otherwise, using libsysprof-ui will usually fail because <dazzle.h>
is not added to the search path.

Resolves: https://gitlab.gnome.org/GNOME/sysprof/-/issues/49
Signed-off-by: Simon McVittie <smcv@debian.org>
2020-09-16 10:48:04 +01:00
68c50ba869 build: Pass libraries to pkgconfig.generate as a positional argument
This allows Meson to associate the pkg-config module with the "main"
library that it represents, in an unambiguous way.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-09-16 10:47:22 +01:00
3c7b76c6ba build: Move Meson dependency() calls to where they’re used
This avoids making the project depend on all its dependencies, some of
which are optional, when being built as a Meson subproject.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
33c81a3a9c memprof: add memory profiling using LD_PRELOAD
This brings over some of the techniques from the old memprof design.
Sysprof and memprof shared a lot of code, so it is pretty natural to
bring back the same callgraph view based on memory allocations.

This reuses the StackStash just like it did in memprof. While it
would be nice to reuse some existing tools out there, the fit of
memprof with sysprof is so naturally aligned, it's not really a
big deal to bring back the LD_PRELOAD. The value really comes
from seeing all this stuff together instead of multiple apps.

There are plenty of things we can implement on top of this that
we are not doing yet such as temporary allocations, cross-thread
frees, graphing the heap, and graphing differences between the
heap at to points in time. I'd like all of these things, given
enough time to make them useful.

This is still a bit slow though due to the global lock we take
to access the writer. To improve the speed here we need to get
rid of that lock and head towards a design that allows a thread
to request a new writer from Sysprof and save it in TLS (to be
destroyed when the thread exits).
2020-02-07 19:00:33 -08:00
653ff6ba9e build: add datadir to pkgconfig files
Mutter wants sysprof's exact dbus interface directory during build time
* https://gitlab.gnome.org/GNOME/mutter/blob/master/src/meson.build#L714

On certain platforms mutter's datadir != sysprof's datadir.
This is initial work for a forthcoming PR to do
```
sysprof_dep.get_pkgconfig_variable('datadir')
```
in mutter for compatibility with these platforms.

This patch is on behalf of nixpkgs where we actually have to carry a 
downstream patch [0] for this exact reason. We install everything into 
their own immutable prefix under `/nix/store`.

[0]: a821167046/pkgs/desktops/gnome-3/core/mutter/0001-build-use-get_pkgconfig_variable-for-sysprof-dbusdir.patch
2019-12-04 17:17:58 -05:00
8712067b8e rapl: add new aid for the RAPL profiler 2019-07-31 15:05:10 -07:00
96fd7a65b8 procs: show active process count when available 2019-07-01 15:45:41 -07:00
6f6ad38a3b diskstat: add aid to show duplex graph for disk graphs 2019-07-01 12:55:21 -07:00
6d4796294e netdev: start on netdev aid to display network graphs 2019-06-26 18:58:31 -07:00
e8528609ec libsysprof-ui: land new UI design
This comprises a massive rewrite of the UI for browsing captures. We use
the SysprofAid class to scan capture files for content and then auto-
matically add visualizers and details pages.

To avoid breaking things incrementally, we just land this as a very large
commit. Not necessarily ideal, but given the amount of stuff that could
break, this is easier.

As part of this process, we're removing a lot of the surface API so that
we can limit how much we need to maintain in terms of ABI.
2019-06-24 20:52:40 -07:00
37960fc0c7 libsysprof-ui: add helper to check for sysprof-3 support 2019-06-13 17:37:59 -07:00
d81890d950 libsysprof-ui: remove profiler menu button 2019-06-04 14:41:14 -07:00
5630e1680f build: add -Dlibsysprof option
This gets us closer to being able to only build the capture static library
2019-06-03 12:26:25 -07:00
0d86933ed1 build: only build libsysprof-ui if -Denable_gtk=true 2019-06-03 12:19:45 -07:00
5f3a9c0a72 libsysprof-ui: add log view 2019-05-29 15:13:01 -07:00
7202d7aed9 libsysprof-ui: add tree model for log messages 2019-05-29 15:13:01 -07:00
bfe72c1d77 libsysprof-ui: add simplified time label
This handles the resizing of the numbers better to avoid jitter of the
positioning.
2019-05-29 15:13:01 -07:00
931849b25c build: add missing libraries to pkgconfig files 2019-05-29 15:13:01 -07:00
90a5268ddc libsysprof-ui: add stack-depth visualizer 2019-05-29 15:13:00 -07:00
588fd43d8b libsysprof-ui: stub out proxy source
The goal for this (which is unfinished) is to setup a dbus proxy to the
peer. That can be reused for both gtk and mutter, if configured correctly.

We'll likely need to allow some specific config tweaks in the UI.
2019-05-29 15:13:00 -07:00
89bcbad02d libsysprof-ui: add callgraph aid 2019-05-29 15:13:00 -07:00
a6d81c5a5c libsysprof: add memory aid 2019-05-29 15:13:00 -07:00
809c24622e libsysprof-ui: start on aids 2019-05-29 15:13:00 -07:00
65f1a8d5a0 libsysprof-ui: start on data collection icons 2019-05-29 15:13:00 -07:00
82a5c68476 libsysprof-ui: stub out SysprofAid
This will be used as a high-level object that knows how to deal with
both the SysprofSource (data collector) and various views for the user.
2019-05-29 15:13:00 -07:00
91a5bbaeee libsysprof-ui: start on launch UI 2019-05-29 15:13:00 -07:00
11712643b9 libsysprof-ui: start on profiler assistant 2019-05-29 15:13:00 -07:00
2212650b00 build: add libdazzle dependency
Now that libdazzle can compile on gtk+-3 3.22 again, we can use it and
still keep things working on Debian stable, RHEL, etc.
2019-05-29 15:13:00 -07:00
10a826f58e libsysprof-ui: add rounded rectangle helper 2019-05-29 15:13:00 -07:00
691a1bc2b0 libsysprof-ui: start on new tabbed design 2019-05-29 15:13:00 -07:00
de06c0da45 libsysprof-ui: start on details view 2019-05-29 15:13:00 -07:00
300461ab5d libsysprof-ui: start on capture view
This widget is going to allow us to remove most of SysprofWindow into a
reusable widget tos hare with Builder.
2019-05-29 15:13:00 -07:00
00d910dc80 libsysprof-ui: start rendering mark data 2019-05-29 15:13:00 -07:00
364f35a7fb wire up marks reader 2019-05-29 15:13:00 -07:00
2a8ffea841 libsysprof-ui: stub out model 2019-05-29 15:13:00 -07:00
3c644c245d libsysprof-ui: stub out marks view 2019-05-29 15:13:00 -07:00
623d7ad027 build: cleanup dependency checking
We always require polkit now, so that we can fallback when we fail to
communicate with the peer.
2019-05-29 15:13:00 -07:00