@@ -477,6 +477,29 @@ static char *callchain_list__sym_name(struct callchain_list *cl,
477
477
return bf ;
478
478
}
479
479
480
+ static void hist_browser__show_callchain_entry (struct hist_browser * browser ,
481
+ struct callchain_list * chain ,
482
+ unsigned short row , int offset ,
483
+ char folded_sign , const char * str ,
484
+ bool * is_current_entry )
485
+ {
486
+ int color , width ;
487
+
488
+ color = HE_COLORSET_NORMAL ;
489
+ width = browser -> b .width - (offset + 2 );
490
+ if (ui_browser__is_current_entry (& browser -> b , row )) {
491
+ browser -> selection = & chain -> ms ;
492
+ color = HE_COLORSET_SELECTED ;
493
+ * is_current_entry = true;
494
+ }
495
+
496
+ ui_browser__set_color (& browser -> b , color );
497
+ hist_browser__gotorc (browser , row , 0 );
498
+ slsmg_write_nstring (" " , offset );
499
+ slsmg_printf ("%c " , folded_sign );
500
+ slsmg_write_nstring (str , width );
501
+ }
502
+
480
503
#define LEVEL_OFFSET_STEP 3
481
504
482
505
static int hist_browser__show_callchain_node_rb_tree (struct hist_browser * browser ,
@@ -487,7 +510,7 @@ static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browse
487
510
bool * is_current_entry )
488
511
{
489
512
struct rb_node * node ;
490
- int first_row = row , width , offset = level * LEVEL_OFFSET_STEP ;
513
+ int first_row = row , offset = level * LEVEL_OFFSET_STEP ;
491
514
u64 new_total ;
492
515
493
516
if (callchain_param .mode == CHAIN_GRAPH_REL )
@@ -508,7 +531,6 @@ static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browse
508
531
list_for_each_entry (chain , & child -> val , list ) {
509
532
char bf [1024 ], * alloc_str ;
510
533
const char * str ;
511
- int color ;
512
534
bool was_first = first ;
513
535
514
536
if (first )
@@ -534,19 +556,10 @@ static int hist_browser__show_callchain_node_rb_tree(struct hist_browser *browse
534
556
str = alloc_str ;
535
557
}
536
558
537
- color = HE_COLORSET_NORMAL ;
538
- width = browser -> b .width - (offset + extra_offset + 2 );
539
- if (ui_browser__is_current_entry (& browser -> b , row )) {
540
- browser -> selection = & chain -> ms ;
541
- color = HE_COLORSET_SELECTED ;
542
- * is_current_entry = true;
543
- }
544
-
545
- ui_browser__set_color (& browser -> b , color );
546
- hist_browser__gotorc (browser , row , 0 );
547
- slsmg_write_nstring (" " , offset + extra_offset );
548
- slsmg_printf ("%c " , folded_sign );
549
- slsmg_write_nstring (str , width );
559
+ hist_browser__show_callchain_entry (browser , chain , row ,
560
+ offset + extra_offset ,
561
+ folded_sign , str ,
562
+ is_current_entry );
550
563
free (alloc_str );
551
564
552
565
if (++ row == browser -> b .rows )
@@ -577,14 +590,12 @@ static int hist_browser__show_callchain_node(struct hist_browser *browser,
577
590
bool * is_current_entry )
578
591
{
579
592
struct callchain_list * chain ;
580
- int first_row = row ,
581
- offset = level * LEVEL_OFFSET_STEP ,
582
- width = browser -> b .width - offset ;
593
+ int first_row = row ;
594
+ int offset = level * LEVEL_OFFSET_STEP ;
583
595
char folded_sign = ' ' ;
584
596
585
597
list_for_each_entry (chain , & node -> val , list ) {
586
598
char bf [1024 ], * s ;
587
- int color ;
588
599
589
600
folded_sign = callchain_list__folded (chain );
590
601
@@ -593,20 +604,11 @@ static int hist_browser__show_callchain_node(struct hist_browser *browser,
593
604
continue ;
594
605
}
595
606
596
- color = HE_COLORSET_NORMAL ;
597
- if (ui_browser__is_current_entry (& browser -> b , row )) {
598
- browser -> selection = & chain -> ms ;
599
- color = HE_COLORSET_SELECTED ;
600
- * is_current_entry = true;
601
- }
602
-
603
607
s = callchain_list__sym_name (chain , bf , sizeof (bf ),
604
608
browser -> show_dso );
605
- hist_browser__gotorc (browser , row , 0 );
606
- ui_browser__set_color (& browser -> b , color );
607
- slsmg_write_nstring (" " , offset );
608
- slsmg_printf ("%c " , folded_sign );
609
- slsmg_write_nstring (s , width - 2 );
609
+ hist_browser__show_callchain_entry (browser , chain , row ,
610
+ offset , folded_sign , s ,
611
+ is_current_entry );
610
612
611
613
if (++ row == browser -> b .rows )
612
614
goto out ;
0 commit comments