@@ -845,6 +845,9 @@ static double swipe_dy = 0;
845845
846846bool render_border = true;
847847
848+ uint32_t chvt_backup_tag = 0 ;
849+ char chvt_backup_selmon [32 ] = {0 };
850+
848851struct dvec2 * baked_points_move ;
849852struct dvec2 * baked_points_open ;
850853struct dvec2 * baked_points_tag ;
@@ -2705,7 +2708,6 @@ void createmon(struct wl_listener *listener, void *data) {
27052708 m -> isoverview = 0 ;
27062709 m -> sel = NULL ;
27072710 m -> is_in_hotarea = 0 ;
2708- m -> tagset [0 ] = m -> tagset [1 ] = 1 ;
27092711 float scale = 1 ;
27102712 m -> mfact = default_mfact ;
27112713 m -> nmaster = default_nmaster ;
@@ -2777,7 +2779,16 @@ void createmon(struct wl_listener *listener, void *data) {
27772779
27782780 wl_list_insert (& mons , & m -> link );
27792781 m -> pertag = calloc (1 , sizeof (Pertag ));
2780- m -> pertag -> curtag = m -> pertag -> prevtag = 1 ;
2782+ if (chvt_backup_tag &&
2783+ regex_match (chvt_backup_selmon , m -> wlr_output -> name )) {
2784+ m -> tagset [0 ] = m -> tagset [1 ] = (1 << (chvt_backup_tag - 1 )) & TAGMASK ;
2785+ m -> pertag -> curtag = m -> pertag -> prevtag = chvt_backup_tag ;
2786+ chvt_backup_tag = 0 ;
2787+ memset (chvt_backup_selmon , 0 , sizeof (chvt_backup_selmon ));
2788+ } else {
2789+ m -> tagset [0 ] = m -> tagset [1 ] = 1 ;
2790+ m -> pertag -> curtag = m -> pertag -> prevtag = 1 ;
2791+ }
27812792
27822793 for (i = 0 ; i <= LENGTH (tags ); i ++ ) {
27832794 m -> pertag -> nmasters [i ] = m -> nmaster ;
@@ -4232,10 +4243,18 @@ void rendermon(struct wl_listener *listener, void *data) {
42324243 LayerSurface * l = NULL , * tmpl = NULL ;
42334244 int i ;
42344245 struct wl_list * layer_list ;
4235-
4246+ bool frame_allow_tearing = false;
42364247 struct timespec now ;
42374248 bool need_more_frames = false;
4238- bool frame_allow_tearing = check_tearing_frame_allow (m );
4249+
4250+ if (session && !session -> active ) {
4251+ return ;
4252+ }
4253+
4254+ if (!m -> wlr_output -> enabled )
4255+ return ;
4256+
4257+ frame_allow_tearing = check_tearing_frame_allow (m );
42394258
42404259 // 绘制层和淡出效果
42414260 for (i = 0 ; i < LENGTH (m -> layers ); i ++ ) {
0 commit comments