diff options
author | Alexander Larsson <alexl@redhat.com> | 2017-11-30 17:50:46 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2017-11-30 21:57:42 +0100 |
commit | 61ea8e8676055c1c38d40b3f440e6bba5207ab53 (patch) | |
tree | f19b6ae8bc15c1762ab2ffa2406203876f929e70 | |
parent | af890e66777497c732bc2117d3f013fa1557d1e9 (diff) | |
download | gtk+-wip/alexl/broadway4.tar.gz |
broadway: Add some (disabled) debugging toolswip/alexl/broadway4
-rw-r--r-- | gdk/broadway/broadway-output.c | 39 | ||||
-rw-r--r-- | gdk/broadway/broadway-protocol.h | 16 |
2 files changed, 48 insertions, 7 deletions
diff --git a/gdk/broadway/broadway-output.c b/gdk/broadway/broadway-output.c index 81332fa795..d74be05029 100644 --- a/gdk/broadway/broadway-output.c +++ b/gdk/broadway/broadway-output.c @@ -7,6 +7,8 @@ #include "broadway-output.h" +//#define DEBUG_NODE_SENDING + /************************************************************************ * Basic I/O primitives * ************************************************************************/ @@ -309,6 +311,22 @@ broadway_output_set_transient_for (BroadwayOutput *output, append_uint16 (output, parent_id); } +static gint append_node_depth = -1; + +static void +append_type (BroadwayOutput *output, guint32 type, BroadwayNode *node) +{ +#ifdef DEBUG_NODE_SENDING + g_print ("%*s%s", append_node_depth*2, "", broadway_node_type_names[type]); + if (type == BROADWAY_NODE_TEXTURE) + g_print (" %u", node->data[4]); + g_print ("\n"); +#endif + + append_uint32 (output, type); +} + + /*********************************** * This outputs the tree to the client, while at the same time diffing * against the old tree. This allows us to avoid sending certain @@ -326,7 +344,6 @@ broadway_output_set_transient_for (BroadwayOutput *output, * changing the dom node at all, and we emit a KEEP_THIS node. * ***********************************/ - static void append_node (BroadwayOutput *output, BroadwayNode *node, @@ -335,28 +352,30 @@ append_node (BroadwayOutput *output, { guint32 i; + append_node_depth++; + if (old_node != NULL && broadway_node_equal (node, old_node)) { if (broadway_node_deep_equal (node, old_node)) { - append_uint32 (output, BROADWAY_NODE_KEEP_ALL); - return; + append_type (output, BROADWAY_NODE_KEEP_ALL, node); + goto out; } if (all_parents_are_kept) { - append_uint32 (output, BROADWAY_NODE_KEEP_THIS); + append_type (output, BROADWAY_NODE_KEEP_THIS, node); append_uint32 (output, node->n_children); for (i = 0; i < node->n_children; i++) append_node (output, node->children[i], i < old_node->n_children ? old_node->children[i] : NULL, TRUE); - return; + + goto out; } } - append_uint32 (output, node->type); - + append_type (output, node->type, node); for (i = 0; i < node->n_data; i++) append_uint32 (output, node->data[i]); for (i = 0; i < node->n_children; i++) @@ -364,6 +383,9 @@ append_node (BroadwayOutput *output, node->children[i], (old_node != NULL && i < old_node->n_children) ? old_node->children[i] : NULL, FALSE); + + out: + append_node_depth--; } void @@ -387,6 +409,9 @@ broadway_output_window_set_nodes (BroadwayOutput *output, append_uint32 (output, 0); start = output->buf->len; +#ifdef DEBUG_NODE_SENDING + g_print ("====== node tree for %d =======\n", id); +#endif append_node (output, root, old_root, TRUE); end = output->buf->len; patch_uint32 (output, (end - start) / 4, size_pos); diff --git a/gdk/broadway/broadway-protocol.h b/gdk/broadway/broadway-protocol.h index 3457d2c6c8..c2d386924e 100644 --- a/gdk/broadway/broadway-protocol.h +++ b/gdk/broadway/broadway-protocol.h @@ -24,6 +24,22 @@ typedef enum { /* Sync changes with broadway.js */ BROADWAY_NODE_KEEP_THIS = 12, } BroadwayNodeType; +static const char *broadway_node_type_names[] G_GNUC_UNUSED = { + "TEXTURE", + "CONTAINER", + "COLOR", + "BORDER", + "OUTSET_SHADOW", + "INSET_SHADOW", + "ROUNDED_CLIP", + "LINEAR_GRADIENT", + "SHADOW", + "OPACITY", + "CLIP", + "KEEP_ALL", + "KEEP_THIS", +}; + typedef enum { BROADWAY_EVENT_ENTER = 'e', BROADWAY_EVENT_LEAVE = 'l', |