commit 90878168cac6365a4208c15ef28f3e81aaf3d2bc Author: Christian Hergert Date: Tue Oct 11 20:50:03 2016 -0700 build: fix distcheck M Makefile.am M NEWS M lib/Makefile.am M tests/test-capture-cursor.c M tests/test-capture.c commit 7f4b372b0838d56844f39c19f19da817ded56f38 Author: Balázs Meskó Date: Tue Oct 11 07:46:45 2016 +0000 Update Hungarian translation M po/hu.po commit 20f9f479668d1345dd0a051690d92aa4440ffb55 Author: Christian Hergert Date: Mon Oct 10 16:24:22 2016 -0700 selection: rename SpVisualizerSelection to SpSelection We want this in sysprof.h (without UI components) so that we can use it to filter things in profilers. Therefore, we don't need to make it namespaced to "visualizers" since a time range selection is a fairly straightforward, and non-UI confined implementation. M lib/Makefile.am M lib/sp-callgraph-profile.c M lib/sp-callgraph-profile.h R062 lib/sp-visualizer-selection.c lib/sp-selection.c A lib/sp-selection.h D lib/sp-visualizer-selection.h M lib/sp-visualizer-view.c M lib/sp-visualizer-view.h M lib/sysprof.h M src/sp-window.c commit c12c8bc3450ae3a1f72fcf73336b0a9185ae6763 Author: Christian Hergert Date: Mon Oct 10 15:50:58 2016 -0700 visualizer-ticks: remove GdkWindow from ticks widget This is preventing us from selecting using the region where the ticks are drawn. This allows the GtkOverlay pass-through child property to work. M lib/sp-visualizer-ticks.c commit e3f2b8760daa329c8778169d5226ef092cfb76aa Author: Piotr Drąg Date: Mon Oct 10 12:41:13 2016 +0200 Update Polish translation M po/pl.po commit 17497498c79e859f3fd0224f54086cf7de42c011 Author: Piotr Drąg Date: Mon Oct 10 12:23:45 2016 +0200 Update POTFILES.in M po/POTFILES.in commit 3b61aefdce17b8a8004efee6c9207cbc0238fad4 Author: Christian Hergert Date: Mon Oct 10 01:48:00 2016 -0700 writer: flush before creating reader from writer This ensures we have a valid end_time updated in the header before creating a reader. M lib/sp-capture-writer.c commit 8e824c2886dd13a65fe6329434f8236a477d4a49 Author: Christian Hergert Date: Mon Oct 10 00:57:57 2016 -0700 build: bump version so Builder can depend on recent changes So that Builder can depend on our recent visualizer work, we can bump the version now here. We will release 3.22.1 before too long anyway, so its fine to bump the number now and just update news/tag for release. M configure.ac commit 4f659abad221534efed76f0d00a33ebbc056754a Author: Christian Hergert Date: Sun Oct 9 21:12:49 2016 -0700 update NEWS M NEWS commit ceb7c02f9380f26437eee8cc04b0d4d3cf4f3dde Author: Christian Hergert Date: Sun Oct 9 20:31:10 2016 -0700 sysprof-ui: add missing header to sysprof-ui.h M lib/sysprof-ui.h commit e239887a9bc8ba16e89c61e092619779f69f6f18 Author: Christian Hergert Date: Sun Oct 9 15:12:50 2016 -0700 empty-state: make empty state labels changable M lib/resources/ui/sp-empty-state-view.ui M lib/sp-empty-state-view.c commit ff8ef76d38bee592e240f611204383f6da51ff40 Author: Christian Hergert Date: Sun Oct 9 15:12:38 2016 -0700 theme-manager: remove debug code M lib/sp-theme-manager.c commit 034a7d881ff6c4d519562ba720b41b7cb97712a6 Author: Christian Hergert Date: Sun Oct 9 12:36:28 2016 -0700 visualizer-view: ensure types are registered These have the chance of being dropped unless we export them here manually. We probably should change how we export symbols so this isn't required in the future. M lib/sp-visualizer-view.c commit 3b2f2505d3c4066a77dc2e9e18a7a902f230f660 Author: Christian Hergert Date: Sun Oct 9 12:36:17 2016 -0700 sysprof-ui: add missing header to public API M lib/sysprof-ui.h commit bc154617a31c717d46adcb86a3b52d8744961231 Author: Christian Hergert Date: Sat Oct 8 20:30:06 2016 -0700 sysprof-dump: print relative time for samples This can be handy to quickly look at the relative time using a double as the time. M tools/sysprof-dump.c commit 34f493d553f37f07d3c29f74dc13d7f3aac5051e Author: Christian Hergert Date: Sat Oct 8 20:29:16 2016 -0700 capture: use SpClock for current timestamp It is important that our capture current time matches the same clock we are using for events. Otherwise we could have drift between CLOCK_MONOTONIC and CLOCK_MONOTONIC_RAW. M lib/sp-capture-types.h commit b91deb26a99b6de6e5cc9e50d85e2a97f3dae13b Author: Christian Hergert Date: Sat Oct 8 20:28:56 2016 -0700 test-capture: initialize clock on startup M tests/test-capture.c commit 62189670af9da5e2cfb2ac6db6296956a8a17d55 Author: Christian Hergert Date: Sat Oct 8 20:09:49 2016 -0700 callgraph: update callgraph when selection changes When the visualizer selection is changed, we can update the callgraph to ensure all samples fall within the time range. M lib/sp-callgraph-profile.c M lib/sp-callgraph-profile.h M src/sp-window.c commit 00b9b1fbf5457b0cda3bfde6b1c493ef3f49ef4e Author: Christian Hergert Date: Sat Oct 8 20:08:56 2016 -0700 visualizer-selection: move selection to sysprof.h This allows us to use the selection in profile components without the use of Gtk. We will probably end up renaming this class to SpSelection or something like that. M lib/Makefile.am M lib/sysprof-ui.h M lib/sysprof.h commit 1e38dc7b3703f66cb064209a5c67d50ede608081 Author: Christian Hergert Date: Sat Oct 8 19:20:45 2016 -0700 callgraph-view: add missing get_profile() accessor M lib/sp-callgraph-view.c commit 37edc29cbbeec75ea001d87f427283ec406a1c10 Author: Christian Hergert Date: Sat Oct 8 19:20:30 2016 -0700 callgraph-view: clear models when unloading M lib/sp-callgraph-view.c commit 42b82f69c9f722d8521916f7bee62306debd2da4 Author: Christian Hergert Date: Sat Oct 8 19:19:46 2016 -0700 visualizer-selection: add visualizer helpers Adds a copy helper (for thread access) and a contains helper. M lib/sp-visualizer-selection.c M lib/sp-visualizer-selection.h commit 7c55f379bb88a502f533189608de5d47be79c8b1 Author: Christian Hergert Date: Sat Oct 8 16:28:18 2016 -0700 theme-manager: add SpThemeManager and use it for custom css We want to set some custom backgrounds for the visualizers, and those need to track with the current theme. SpThemeManager will watch the systems theme changes (including dark theme) and update the loaded CSS resources as necessary. M lib/Makefile.am A lib/resources/css/SpVisualizerView-Adwaita-dark.css A lib/resources/css/SpVisualizerView-Adwaita.css R100 lib/resources/css/shared.css lib/resources/css/SpVisualizerView-shared.css M lib/resources/libsysprof.gresource.xml A lib/sp-theme-manager.c A lib/sp-theme-manager.h M lib/sp-visualizer-view.c M src/resources/theme/shared.css commit 7ca849313066c0419d62ee3146ede55d52212084 Author: Christian Hergert Date: Sat Oct 8 16:27:27 2016 -0700 viewport: remove SpViewport We didn't end up using this by using plain GtkViewport. M lib/Makefile.am D lib/sp-viewport.c D lib/sp-viewport.h commit aa61c435475936286571bfa35decd08d78d822c1 Author: Christian Hergert Date: Sat Oct 8 15:36:01 2016 -0700 visualizer-view: fix selections when scrolling If we have a scrolled view, we might be a bit off on the selected range until this commit. This adjusts for the scrolled area and ensures that both ticks and selections land in the right place. M lib/sp-visualizer-view.c commit 527f95fa77ca782e180e3bf725b4608544711566 Author: Christian Hergert Date: Sat Oct 8 15:09:38 2016 -0700 help-overlay: add help overlay to SpWindow and app menu This adds an app menu and window action to activate the keyboard shortcuts overlay. A src/resources/gtk/help-overlay.ui M src/resources/gtk/menus.ui M src/resources/sysprof.gresource.xml M src/sp-application.c commit 70aeeb66bcf851589e20d19350639396f145e8b6 Author: Christian Hergert Date: Sat Oct 8 13:40:12 2016 -0700 visualizer-selection: initial visualizer selection support This gets started on allowing the user to select a region. Nothing is yet responding to the changes in selection, but that can come later. Ideally, we will truncate (or mark rows invisible/insensitive) if they do not fall within the selected time region. M lib/Makefile.am A lib/resources/css/shared.css M lib/resources/libsysprof.gresource.xml M lib/resources/ui/sp-visualizer-view.ui M lib/sp-visualizer-row.c A lib/sp-visualizer-selection.c A lib/sp-visualizer-selection.h M lib/sp-visualizer-view.c M lib/sp-visualizer-view.h M lib/sysprof-ui.h commit e85707f5c9d938403d25d2e6391e849f507f5c25 Author: Christian Hergert Date: Fri Oct 7 12:58:30 2016 -0700 visualizer-ticks: make lines sharper These multi-width lines were blurry, so for now just make them 1px wide. M lib/sp-visualizer-ticks.c commit 8f613b5352c49a82e2944600593bbc0ad3d0e5a4 Author: Christian Hergert Date: Thu Oct 6 22:26:52 2016 -0700 visualizer-ticks: fix msec value M lib/sp-visualizer-ticks.c commit 72a8276fafbe293d7cb3da498856508118e8bf63 Author: Christian Hergert Date: Thu Oct 6 21:03:01 2016 -0700 visualizer-view: fix time range for ticks This uses the graph_width to get the proper time range of the visualizer row. Mostly, this is just complicated because we the ticks to be an overlay rather than inline with the list rows. M lib/resources/ui/sp-visualizer-view.ui M lib/sp-visualizer-view.c commit c5fb8b5fc94fc9bc9b6034333f26c212868e4208 Author: Christian Hergert Date: Thu Oct 6 21:02:00 2016 -0700 visualizer-row: add private access to graph_width Having this makes a few things easier now that we are relying on pixel cache for scrolling. M lib/Makefile.am A lib/sp-visualizer-row-private.h M lib/sp-visualizer-row.c commit 51ed367b743db8d7efe94aece5df817de42aee14 Author: Christian Hergert Date: Tue Oct 4 17:47:37 2016 -0700 wip: visualizer work M lib/resources/ui/sp-visualizer-view.ui M lib/sp-line-visualizer-row.c M lib/sp-visualizer-list.c M lib/sp-visualizer-list.h M lib/sp-visualizer-row.c M lib/sp-visualizer-row.h M lib/sp-visualizer-view.c commit 6d9656e6fe82c744221c40350e74f37d1356184f Author: Christian Hergert Date: Tue Oct 4 12:29:50 2016 -0700 visualizer-view: use queue_resize instead of queue_draw We need everything to update from this widget down the widget hierarchy so they all get redrawn. Queuing a resize will ensure that happens. M lib/sp-visualizer-view.c commit 8d8c879384f326ee12b8d2893e6ccff9843e5fdc Author: Christian Hergert Date: Mon Oct 3 16:08:13 2016 -0700 visualizer-view: add helper viewport for scrolling We can avoid using the inline scrollbar in favor of overlay scrolling if we bridge the adjustment into the GtkViewport. This sadly requires us to subclass things to get it just right. M lib/Makefile.am M lib/resources/ui/sp-visualizer-view.ui A lib/sp-viewport.c A lib/sp-viewport.h M lib/sp-visualizer-view.c commit 59cbd8fc3f17bd12106126cc63fa0b99c016bc83 Author: Christian Hergert Date: Mon Oct 3 16:06:00 2016 -0700 visualizer-view: fix logic on swapping times M lib/sp-visualizer-view.c commit 6eee3343de06321301aa1866b52e83c92c22e9e1 Author: Christian Hergert Date: Fri Sep 30 18:25:22 2016 -0700 visualizer-ticks: avoid FPE M lib/sp-visualizer-ticks.c commit 974f0b45fbfd668a08eba0204b82f20b2c32f8a8 Author: Christian Hergert Date: Fri Sep 30 18:07:39 2016 -0700 line-visualizer-row: adjust surface when time range changes We can reuse the existing surface, but we need to render it at an offset so that we aren't so shaky under scrolling. M lib/sp-line-visualizer-row.c commit fef48610dad785aa8f4248f9a3a6b1b8b13f7136 Author: Christian Hergert Date: Fri Sep 30 17:33:33 2016 -0700 visualizer-row: allow begin/end time to be NULL M lib/sp-visualizer-row.c commit 69f5da327dc2421421c8094fa00ec71e4d9ab271 Author: Christian Hergert Date: Fri Sep 30 17:32:41 2016 -0700 app: add more complete keybindings This matches more closely to Epiphany, which for better or worse is the closest use-case we have currently for our zoom design. M src/sp-application.c commit 5adb7d6d2c2213e3571298f14a6bcf54471f4ae9 Author: Christian Hergert Date: Fri Sep 30 17:11:29 2016 -0700 multi-paned: only mark position if sequence is accepted This fixes a bug where any time we touch the adjacent scrollbar, the position of the paned gets set. M lib/sp-multi-paned.c commit 76b92cec999d7c133b60bf7ed0a89478fe058094 Author: Christian Hergert Date: Fri Sep 30 17:07:33 2016 -0700 visualizer-ticks: don't render 00:00:00.0000 If we are at the beginning of a capture, we would end up drawing the msec because h/m/s were all zero. Make sure we also have a non-zero msec or just fallback to regular timestamps. M lib/sp-visualizer-ticks.c commit 5c53dd5d6e61db735c471ff81654a5302c33825e Author: Christian Hergert Date: Fri Sep 30 17:04:48 2016 -0700 visualizer-view: avoid overscroll upon zoom change When changing the zoom (zooming out), we could potentially let the scrollbar be past the end. This looks pretty bad when the GtkWindow doesn't clip correctly. This just adjusts things so we push ourselves back into the visible area. M lib/sp-visualizer-view.c commit e54c496f7d6e2a53faff3446037fc7d16318d57e Author: Christian Hergert Date: Fri Sep 30 16:59:11 2016 -0700 visualizer-view: set hscrollbar policy to never Because we are using ListBox, we can't quite do scrolling the way we'd like (naturally using the scrolled window). So for now we need to just disable hscrolling here. However, it would be nice if we could teach the viewport to handle this correctly so that it wires up the GtkScrollable:hscrollbar-adjustment to our internal one. M lib/resources/ui/sp-visualizer-view.ui commit 151895749d7ff6381534142e72c4b5ee84d674a9 Author: Christian Hergert Date: Fri Sep 30 16:56:46 2016 -0700 window: remove unused variable M src/sp-window.c commit 0d8f45f03400a5c50935fd9012980460e6f489ab Author: Christian Hergert Date: Fri Sep 30 16:54:17 2016 -0700 visualizer-ticks: draw position labels next to ticks This adds label text next to important epochs. We determine which epochs are important by trying to choose the waypoints that had more than 2 epochs land in view. This avoids showing numbers for multiple time-spans, but giving enough context to be useful. M lib/sp-visualizer-ticks.c commit a20ba80f3debeb7f724552e696a0e648e63782d4 Author: Christian Hergert Date: Fri Sep 30 14:02:58 2016 -0700 line-visualizer-row: disable time optimization This is overactive because we could be zoomed in so far that we don't pick up the adjacent frame. We need something more clever that can pick up frames adjacent to the visible area of the capture. M lib/sp-line-visualizer-row.c commit 879d00199a3813b72cf520585653eef2fbe92f75 Author: Christian Hergert Date: Fri Sep 30 13:55:53 2016 -0700 window: add tooltips M src/resources/ui/sp-window.ui commit bd008c0826a54878616d8dc86ae804c0311e1ae9 Author: Christian Hergert Date: Fri Sep 30 13:29:09 2016 -0700 app: add accels for zoom actions Adds ctrl++, ctrl+-, and ctrl+0 for typical zoom operations on the visualizers. M src/sp-application.c commit c116120563c1d73da603c53aa505fa38dc802eaa Author: Christian Hergert Date: Fri Sep 30 13:21:17 2016 -0700 visualizer-ticks: adjust ticks for capture epoch We need to take into account the real start of the capture to land the ticks in the right position. Add "epoch" concept to SpVisualizerTicks for just this purpose. M lib/sp-visualizer-ticks.c M lib/sp-visualizer-ticks.h M lib/sp-visualizer-view.c commit 54116ba765318b5db53f081261557b9b36c3520d Author: Christian Hergert Date: Fri Sep 30 13:09:13 2016 -0700 sysprof-ui: make SpVisualizerTicks and SpVisualizerList private This classes are implementation details and should not be exposed into our public API/ABI. M lib/Makefile.am M lib/sysprof-ui.h commit 428cbcbfbbba3eab028b391b70a1974a2dd6afa1 Author: Christian Hergert Date: Fri Sep 30 13:01:57 2016 -0700 sysprof-ui: add SpMultiPaned to public API This adds sp-multi-paned.h to the public API of libsysprof-ui-2 M lib/sysprof-ui.h commit 2d8401a542909612f7527320dd2f80f3de96eebc Author: Christian Hergert Date: Fri Sep 30 13:00:31 2016 -0700 window: use SpMultiPaned This allows us to have the SpVisualizerView grow and shrink along with the visualizer content up until the user has manually moved the paned handle. At which point it clamps to that position as allowed by the size request phases. M src/resources/ui/sp-window.ui M src/sp-window.c commit d64bd3fe51273d13fb2be19259e0fcb4e4c4420b Author: Christian Hergert Date: Fri Sep 30 12:59:57 2016 -0700 visualizer-view: set vexpand on scrolledwindow This ensures that the scrolled window expands to the visible area, which is indeed the desired effect. M lib/resources/ui/sp-visualizer-view.ui commit f9e19131b5d92a61a38929e52ae8fa9c2e2e6ff0 Author: Christian Hergert Date: Fri Sep 30 12:59:09 2016 -0700 multi-paned: add SpMultiPaned This is copy/paste from PnlMultiPaned. The feature we want from it is the ability to resize paned halves based on their natural sizing up until the user has manually changed the paned handle position. M lib/Makefile.am A lib/sp-multi-paned.c A lib/sp-multi-paned.h commit 69d5dd2f5f5b25620934145be7ab1486138a661e Author: Christian Hergert Date: Fri Sep 30 10:54:53 2016 -0700 avoid warnings on shutdown Occasionally we could get a few warnings during shutdown due to inconsistent teardown state. This tries to handle those so we shutdown cleanly. M lib/sp-callgraph-view.c M lib/sp-profiler-menu-button.c commit fa58f7a941caa0a419e509839563ac49b5be960e Author: Christian Hergert Date: Thu Sep 29 18:14:50 2016 -0700 visualizer-view: hide scrollbar by default M lib/resources/ui/sp-visualizer-view.ui commit 4bd72708d7e2e1189a041692bf1d0323860c6718 Author: Christian Hergert Date: Thu Sep 29 18:10:29 2016 -0700 line-visualizer-row: handle HiDPI properly When we find ourselves on a HiDPI display, we need to make sure we setup the device scale factor properly and adjust our render checks for valid surface sizes. M lib/sp-line-visualizer-row.c commit 75332678a6d4954f6f14ff8e3d8e0b678d369a21 Author: Christian Hergert Date: Thu Sep 29 17:49:53 2016 -0700 visualizer-view: dynamically toggle scrollbar visibility Generally we want this thing hidden, so only show it if we have zoomed in enough to cause it to be useful. We need to also find a way for the container to be able to handle the change in size request and adjust the GtkPaned to be non-ugly. M lib/sp-visualizer-view.c commit 0766bd6b93b250e84fef1b75cfc4430c935038f6 Author: Christian Hergert Date: Thu Sep 29 14:59:02 2016 -0700 line-visualizer-row: restrict data points to visible range We don't want to cache all the datapoints from the underlying capture, just the datapoints for the visible region (and some at the edges so we get proper cairo_curve_to() x,y coordinates). This isn't a major optimization yet until we start supporting much larger capture sizes. But that will mostly be improved with capture indexes anyway. M lib/sp-line-visualizer-row.c commit caa95fcca706c212f919d47a94859c27ec48c985 Author: Christian Hergert Date: Thu Sep 29 14:37:00 2016 -0700 visualizer-view: implement basic panning There are lots of little things that need fixing, such as the ticks positioning, and reusing surfaces as much as possible, but this gets our "MVP" panning in place. M lib/resources/ui/sp-visualizer-view.ui M lib/sp-visualizer-view.c commit 342ee71119de323a67e16303dfd7459f98878004 Author: Christian Hergert Date: Wed Sep 28 21:02:01 2016 -0700 window: add separators in gear menu M src/resources/ui/sp-window.ui commit b9b96184cde2d7034ffcfd8db744d482559887c4 Author: Christian Hergert Date: Wed Sep 28 19:56:39 2016 -0700 visualizers: wire zoom manager to visualizers This gets the basic zoom control working. I anticipate we'll need some additional changes once we land panning support. M lib/sp-line-visualizer-row.c M lib/sp-visualizer-row.c M lib/sp-visualizer-view.c M lib/sp-visualizer-view.h M src/resources/ui/sp-window.ui commit aaf521ef1d8fceef40c0d2b334ead07d40426db2 Author: Christian Hergert Date: Wed Sep 28 18:11:32 2016 -0700 window: set minimum zoom level M src/resources/ui/sp-window.ui commit 9bd3891d4325f4441da5eb1063991d1ba78325d8 Author: Christian Hergert Date: Wed Sep 28 18:08:34 2016 -0700 window: use floor() instead of ceil() Otherwise we get 111% instead of 110%. M src/sp-window.c commit 60e917a5d13e261cbf8d905296e526df82816337 Author: Christian Hergert Date: Wed Sep 28 18:06:33 2016 -0700 window: update zoom reset label to display current zoom M src/resources/ui/sp-window.ui M src/sp-window.c commit baf26fa0b6e93c2e2348a5712e63bef74f3da962 Author: Christian Hergert Date: Wed Sep 28 18:06:00 2016 -0700 build: add $LIBM to the sysprof binary M configure.ac M src/Makefile.am commit 50bfd8db727555628022ed0a78d5335cf0ec265b Author: Christian Hergert Date: Wed Sep 28 17:51:48 2016 -0700 zoom: add plumbing for zoom to SpWindow This uses the new ZoomManager to wire up zoom controls for the main window. We had to switch away from GMenu to give ourselves the control we will need for the zoom label of 100% which still needs to be wired up. M src/resources/gtk/menus.ui M src/resources/ui/sp-window.ui M src/sp-window.c commit e6ecad548aed1a39e1d7986b963fb0ee60f638b7 Author: Christian Hergert Date: Wed Sep 28 17:13:24 2016 -0700 zoom-manager: add zoom manager to simplify zoom control This will give us a single place to deal with the mechanics of how zoom works, and then our UI code can simply apply the value as necessary. M lib/Makefile.am A lib/sp-zoom-manager.c A lib/sp-zoom-manager.h M lib/sysprof-ui.h M tests/Makefile.am A tests/test-zoom.c commit 4d48f98f6dcdf97d9179d2cb5ebf1edb79dd5500 Author: Christian Hergert Date: Wed Sep 28 14:13:15 2016 -0700 visualizer-ticks: remove extraneous assertion This isn't exactly true anymore, so we need to remove it now that we can have more interesting time spans. M lib/sp-visualizer-ticks.c commit 7831b767d017edf9396e1f4ff006a6b4a6e000c2 Author: Christian Hergert Date: Wed Sep 28 14:10:29 2016 -0700 visualizer-view: shrink time range when necessary If we don't have a minute worth of input, we should shrink the visible area to exactly what we came across. We still have the issue of the UI creating the capture file before auth has completed, but we can fix that later so we have a "semantically" correct start time. M lib/sp-visualizer-view.c commit 527ad1476ca2dc3dc41b464a296e5be682064f81 Author: Christian Hergert Date: Wed Sep 28 14:09:53 2016 -0700 cpu-visualizer: reset colors upon new reader We want to reset our colors so that we look the same on subsequent loads, which is what the user would expect. M lib/sp-cpu-visualizer-row.c commit baabf7692c7cece625eae5c2d61d2da25182b163 Author: Christian Hergert Date: Wed Sep 28 14:09:32 2016 -0700 color-cycle: add reset helper This will reset the colors and move back to position 0. M lib/sp-color-cycle.c M lib/sp-color-cycle.h commit 388557cdfe7305dc81bd15469ea2087247a1d550 Author: Christian Hergert Date: Wed Sep 28 13:23:51 2016 -0700 window: expand for visualizers as necessary We want the paned to expand for the visualizers so that the UI looks natural as often as possible without scrolling. M src/resources/ui/sp-window.ui M src/sp-window.c commit b5fccca06981bf49eeef7420bc1a834a6bb90b57 Author: Christian Hergert Date: Wed Sep 28 13:22:51 2016 -0700 visualizer-view: add ::visualizer-added and ::visualizer-removed These signals are emitted when a visualizer row has been added or removed from the view. This might be handy if you want to resize a paned based on the natural size of the visualizers. M lib/sp-visualizer-view.c M lib/sp-visualizer-view.h commit 337334e4fa1577eb7c82a9e0cec658f22209e383 Author: Christian Hergert Date: Wed Sep 28 13:22:25 2016 -0700 visualizer-view: remove min height for rows We will handle this in other areas, so we can drop this. M lib/resources/ui/sp-visualizer-view.ui commit afbb2cd9368e742b648897f8ad296ac5e82b5ca3 Author: Christian Hergert Date: Wed Sep 28 12:30:29 2016 -0700 window: use GtkFileChooserNative This helps remove gtk_dialog_run() in favor of gtk_native_dialog_run() which safely handles issues with the primary main loop making progress. M src/sp-window.c commit f8a0f2701e1d59adf377e3f52a1505ed1c31ca2f Author: Christian Hergert Date: Tue Sep 27 23:03:12 2016 -0700 visualizer-view: add SpVisualizerView This adds a new helper widget SpVisualizerView to simplify using visualizers from applications using libsysprof-ui-2 such as Builder. We can manage the view range, zoom, etc from this widget going forward. M lib/Makefile.am M lib/resources/libsysprof.gresource.xml A lib/resources/ui/sp-visualizer-view.ui M lib/sp-visualizer-ticks.c A lib/sp-visualizer-view.c A lib/sp-visualizer-view.h M lib/sysprof-ui.h M src/resources/theme/shared.css M src/resources/ui/sp-window.ui M src/sp-window.c commit 2197a0c02e5d7f7193e93f4688acf26606e28f88 Author: Christian Hergert Date: Tue Sep 27 21:24:33 2016 -0700 capture: add end time for captures Update the end time when we flush the buffer to disk. Also add a way to either incrementally get the end time or rely on the header when possible. M lib/sp-capture-reader.c M lib/sp-capture-reader.h M lib/sp-capture-types.h M lib/sp-capture-writer.c M tests/test-capture.c commit 4953731dd7c8b5a19949783fdd38cc7de1ffd796 Author: Christian Hergert Date: Tue Sep 27 19:18:40 2016 -0700 cpu-visualizer-row: choose color for row For each CPU counter we come across, choose a new color from the cycle. M lib/sp-cpu-visualizer-row.c commit f3cec0f8c136733f1fb9c8c57897d79e93bd2b63 Author: Christian Hergert Date: Tue Sep 27 19:18:29 2016 -0700 line-visualizer-row: add color parameter for counter Allow specifying a color for a counter that is added to the visualizer. M lib/sp-line-visualizer-row.c M lib/sp-line-visualizer-row.h commit e7e8e913b51c99e19b7f47ed680463fbbc8beee6 Author: Christian Hergert Date: Tue Sep 27 19:16:07 2016 -0700 color-cycle: add color generator helper We need a simple helper to choose colors for visualizers so they do not overlap. This is just a simple cycle using some predefined colors. We should come up with something more unique in the future or possibly do this with CSS and :nth-child(n) once we have access to CSS nodes. M lib/Makefile.am A lib/sp-color-cycle.c A lib/sp-color-cycle.h commit 5a5bf1900f3f46ba0f06a587030b48bd24b502d1 Author: Christian Hergert Date: Tue Sep 27 18:32:13 2016 -0700 visualizer-ticks: adjust ticks opacity We can lighten the ticks a bit here and still be theme agnostic. M src/resources/theme/shared.css commit 21ed742215bf89d454a5a66d2fb2083254dd0c0c Author: Christian Hergert Date: Tue Sep 27 18:30:55 2016 -0700 line-visualizer-row: only queue draw when using widget style We can avoid queuing a new draw request if we are not using the default styling of the widget in the line drawing. M lib/sp-line-visualizer-row.c commit 21db65167f60a6bff0afbd698e31fdba93fd3a1e Author: Christian Hergert Date: Tue Sep 27 18:27:59 2016 -0700 line-visualizer-row: use default foreground to draw When drawing lines, default to the foreground color of the widget. This means we also need to queue a draw when the CSS style has been updated. M lib/sp-line-visualizer-row.c commit 7aee4c428bb1bda9dfd1a13c5a294f79949c98fa Author: Christian Hergert Date: Tue Sep 27 17:22:05 2016 -0700 css: tweak css for visualizers Just some style fixes that make things look better when playing around with the paned and showing overscroll. M src/resources/theme/shared.css commit f2f03259a2ad75948d3c9e825bd89260485272ab Author: Christian Hergert Date: Tue Sep 27 17:21:49 2016 -0700 visualizer-ticks: set CSS element name to "ticks" M lib/sp-visualizer-ticks.c commit fa1a8d9276ab2a13d69e0c88b0207bc5e3b12345 Author: Christian Hergert Date: Tue Sep 27 17:21:28 2016 -0700 visualizer-ticks: use color from GtkStyleContext This should improve the coloring when used with a dark theme. M lib/sp-visualizer-ticks.c commit 3a3b4f1fa06a0b56d41d0ecd6790bd77c4eca993 Author: Christian Hergert Date: Tue Sep 27 17:09:37 2016 -0700 visualizer-ticks: adjust line draw ordering We want to draw the most important ticks on top, which will improve things should we start using CSS to define styling. M lib/sp-visualizer-ticks.c commit 857082b222dc5621c878a475aa449b51f64f2ff4 Author: Christian Hergert Date: Tue Sep 27 17:08:52 2016 -0700 visualizer-ticks: tweak half-line positioning Just to get things a bit more friendly should we choose even line widths. M lib/sp-visualizer-ticks.c commit ad130db3d6e1f5d49188fe3bbe2729f91b060b27 Author: Christian Hergert Date: Tue Sep 27 16:44:23 2016 -0700 cpu-visualizer-row: hide if no counters were found If we failed to locate any counters, then there isn't much we can show the user here. So just hide the row. M lib/sp-cpu-visualizer-row.c commit 984fac73b6aad82318c78422f541c5df3767d3e0 Author: Christian Hergert Date: Tue Sep 27 16:38:17 2016 -0700 visualizer-ticks: adjust tick positioning and add 5sec span Just some improvements to out positioning so things line up as expected. M lib/sp-visualizer-ticks.c commit aa21c2379f347d6bfd6dcec44209a630eeadabd6 Author: Christian Hergert Date: Tue Sep 27 15:42:26 2016 -0700 visualizer-ticks: start on minimal ticks implementation We need some sort of scale for content, so we will do this with an overlay for now. However, we will also want something to be able to do selections in the future. This still needs some iteration for correctness, but this sort of gets the ball rolling. M lib/Makefile.am A lib/sp-visualizer-ticks.c A lib/sp-visualizer-ticks.h M lib/sysprof-ui.h M src/resources/theme/shared.css M src/resources/ui/sp-window.ui commit c24306349ff261568c9cbfc0804932b27b5d6e70 Author: Christian Hergert Date: Tue Sep 27 15:40:46 2016 -0700 line-visualizer-row: ignore css border If a border is specified in CSS, we do not want to draw on that. Make sure we adjust our allocation to take that into account. M lib/sp-line-visualizer-row.c commit 1dcb41f623585a2b7b1f163821067d60c7739a86 Author: Christian Hergert Date: Mon Sep 26 23:24:17 2016 -0700 line-visualizer-row: use scaled surface when available If we have not yet received our proper draw for the new size allocation (likely right after the size allocate), then we can just use the old surface but at a scaled value. This is handy so that we don't block the main loop trying to do drawing of lots of data points. Instead we just scale the image and wait for the high-quality version to complete. M lib/sp-line-visualizer-row.c commit 321fc18eee3f5310f484fb526c2a6e3cb9610f26 Author: Christian Hergert Date: Mon Sep 26 22:14:44 2016 -0700 cpu-visualizer-row: stop after locating counters In practice, we do a single counter definition for the CPU definitions. So we can stop iterating the samples after we successfully locate an item. M lib/sp-cpu-visualizer-row.c commit f600a963642602a2a630c7c3d77660583f30a631 Author: Christian Hergert Date: Mon Sep 26 21:59:28 2016 -0700 hostinfo: stash CPU usage 4x per second Probably want to make this a tunable at some point, but this makes things a bit better for graphing now. M lib/sp-hostinfo-source.c commit 573ba7bf511bee0b855fc6d47af25c1360677f9f Author: Christian Hergert Date: Mon Sep 26 21:57:33 2016 -0700 line-visualizer-row: use cairo_curve_to() This makes our line graph match more closely to the design coming from Builder's cpu graph. M lib/sp-line-visualizer-row.c commit 4bdbc46381c5ae42ea9aaa7a5a9c9311316224e6 Author: Christian Hergert Date: Mon Sep 26 20:08:34 2016 -0700 line-visualizer-row: simplify data point rendering We can use some crafty scale/translations to simplify the line drawing of data points. M lib/sp-line-visualizer-row.c commit 63e7e1d1dda969c1f6c1189e0d5a82f0458e15ef Author: Christian Hergert Date: Mon Sep 26 19:27:37 2016 -0700 line-visualizer-row: remove debug code M lib/sp-line-visualizer-row.c commit bdc62bac1edb75dbfc2a76af8c491756fdaafca4 Author: Christian Hergert Date: Mon Sep 26 19:21:10 2016 -0700 visualizer-list: add SpVisualizerList This simplifies the visualizer reader and time propagation. It will also give us a single place to manage zoom levels when we get to that. M lib/Makefile.am A lib/sp-visualizer-list.c A lib/sp-visualizer-list.h M lib/sysprof-ui.h M src/resources/ui/sp-window.ui M src/sp-window.c commit 24477d41cf4a7f17e78c3234a359087b3c6ce3f1 Author: Christian Hergert Date: Mon Sep 26 17:38:47 2016 -0700 line-visualizer: plumb off-screen rendering mechanics This starts getting the mechanics in place for off screen rendering using a cairo image surface. We create our own point cache for storing x,y pairs and then simplify our drawing based on that. M lib/sp-line-visualizer-row.c M lib/sp-line-visualizer-row.h commit 7e38d929da69b7b97d874659ec7f180d9a7f582c Author: Christian Hergert Date: Mon Sep 26 17:38:29 2016 -0700 window: set y scale for graph M src/resources/ui/sp-window.ui commit e537b84c29d566ce32468d3df5ad86b7d99437ba Author: Christian Hergert Date: Mon Sep 26 17:37:59 2016 -0700 cpu-visualizer: remove prepare vfunc This is going away, at least in this form. M lib/sp-cpu-visualizer-row.c commit e4bc640a491f3fd5997c1406448086aa9239a1bd Author: Christian Hergert Date: Mon Sep 26 17:37:11 2016 -0700 capture-cursor: reset reader upon creation When creating our private reader copy, we need to reset the reader so that we start at the beginning. Otherwise, we are likely to be at the end of the capture (especially for in memory captures). M lib/sp-capture-cursor.c commit a3257ed40bb1c2ad5b08622679d5220ff004fbdf Author: Christian Hergert Date: Mon Sep 26 17:36:47 2016 -0700 capture-condition: style cleanup Just some nits and defensive programming. M lib/sp-capture-condition.c commit 571c2320da8e6b534c60d9fda77db01f3131fbed Author: Christian Hergert Date: Mon Sep 26 17:34:58 2016 -0700 pointcache: add PointCache utility class This is a simple cache that keeps x,y pairs for use when drawing visualizers. To keep this generic, and save on memory, we simply store the x,y coordinates as floats between 0.0 and 1.0. This saves us roughly 50% on each data point over the 2 8-byte numbers we would otherwise store. Obviously, we could take this further and make some fancy index storage with run-length-encode values, but this should work for now and allow us to get more exotic later. M lib/Makefile.am A lib/util/pointcache.c A lib/util/pointcache.h commit 0a9193ab700af05066d883e9ffd54ecc1f5d0569 Author: Christian Hergert Date: Sun Sep 25 15:37:00 2016 -0700 line-visualizer: remove legacy drawing code This provides the plumbing to do the threaded drawing, we just need to write the capture cursor and draw operations from the pixman/cairo worker thread (and do so safely). M lib/sp-line-visualizer-row.c commit 5ceff81d5dd29cc0dddd2e725fb023e43bc4a900 Author: Christian Hergert Date: Sun Sep 25 15:35:14 2016 -0700 visualizer: add set_time_range() and get_time_range() This allows the row to be notified of the visible range, which can result from changing the zoom or a new reader being set. M lib/sp-visualizer-row.c M lib/sp-visualizer-row.h commit 1f07467800fc005dd2e8419151cdddb444a10072 Author: Christian Hergert Date: Sun Sep 25 13:32:14 2016 -0700 capture-condition: add new AND condition This requires that both the left and right condition evaluate to TRUE. We obviously will want to add more of these for things like OR, NOT, etc. However, we can add them as necessary since they are fairly self contained patches. M lib/sp-capture-condition.c M lib/sp-capture-condition.h commit 7d0cce7bdfdd1a42505ba6c8d115cbf1c1b08a3e Author: Christian Hergert Date: Sun Sep 25 12:21:56 2016 -0700 ui: remove legacy CSS selectors Now that we bumped the gtk+ requirement, we can remove the old CSS selectors that are obsolete. M src/resources/theme/shared.css commit 3b9ea07d31c12d37e8ad72ed62fe7116febfeaf8 Author: Christian Hergert Date: Sun Sep 25 12:19:53 2016 -0700 cpu: discover cpu counters from SpCaptureReader This allows us to dynamically discover the cpu counters from the capture by looking for the "CPU Total" category. M lib/Makefile.am A lib/sp-cpu-visualizer-row.c C052 lib/sp-line-visualizer-row.h lib/sp-cpu-visualizer-row.h M lib/sp-line-visualizer-row.c M lib/sp-line-visualizer-row.h M src/resources/ui/sp-window.ui commit 84c61c3344733c67fca552ebfeba6a0e1b5a94ba Author: Christian Hergert Date: Sun Sep 25 11:36:18 2016 -0700 capture-condition: add matcher for counter ids This lets us focus on the query of "show me all events related to counter X" rather than the implementation details. Which means later on, if we build a real index, we can optimize this without changing user code. M lib/sp-capture-condition.c M lib/sp-capture-condition.h commit 01794db9b0c60545b8652249f3346e2564c3731f Author: Christian Hergert Date: Sun Sep 25 00:27:54 2016 -0700 visualizer-row: add padding to visualizer rows M lib/sp-visualizer-row.h commit 58017c3b45507df02e06205b3f197b89477b9f25 Author: Christian Hergert Date: Sun Sep 25 00:27:28 2016 -0700 build: ensure we build and run new tests M tests/Makefile.am commit ae281af0e27b33864209d4046db268f1974728fb Author: Christian Hergert Date: Sun Sep 25 00:27:07 2016 -0700 build: bump autoconf files M m4/ax_is_release.m4 commit c19d0635aa7f147007cdefc6f2fb9dde326fbf8b Author: Christian Hergert Date: Sun Sep 25 00:25:08 2016 -0700 capture: add SpCaptureCursor and associated types This API helps us simplify some of the tooling to iterate through a capture. In particular, we might want to setup a bunch of matches and then just iterate through the items. This can also allow delaying the iteration until the future which might be handy for visualizers which won't want to block the main loop. I'm not jazzed about the 64k buffer created for every cursor due to the SpCaptureReader copy, but it's probably not a big deal in practice until we start doing more exotic things. M lib/Makefile.am A lib/sp-capture-condition.c A lib/sp-capture-condition.h A lib/sp-capture-cursor.c A lib/sp-capture-cursor.h M lib/sp-capture-types.h M lib/sysprof.h A tests/test-capture-cursor.c commit b8f465659b4c947597f8305b319470b4d2edd4a3 Author: Christian Hergert Date: Sun Sep 25 00:23:28 2016 -0700 reader: add sp_capture_reader_copy() This function allows copying a capture so that we can do additional reads. This does, however, copy the buffers which might be more memory than we want for large usage. We can tweak things as we go to figure out the cursors. M lib/sp-capture-reader.c M lib/sp-capture-reader.h commit 99ff8f2a5c632a1063af91126cbd3fefb8363f20 Author: Christian Hergert Date: Fri Apr 15 06:23:53 2016 -0700 wip: visualizers M lib/Makefile.am A lib/sp-hostinfo-source.c C061 lib/sysprof-ui.h lib/sp-hostinfo-source.h A lib/sp-line-visualizer-row.c C057 lib/sysprof-ui.h lib/sp-line-visualizer-row.h C056 lib/sysprof-ui.h lib/sp-visualizer-row.c A lib/sp-visualizer-row.h M lib/sysprof-ui.h M lib/sysprof.h M src/resources/theme/shared.css M src/resources/ui/sp-window.ui M src/sp-window.c M tools/sysprof-cli.c commit 5b4493e2f0b6c888862c265a1c1e72fe8cf86fc8 Author: Christian Hergert Date: Mon Sep 19 15:20:51 2016 -0700