mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2025-11-12 13:30:01 -05:00
opt: opt code struct
This commit is contained in:
parent
f0c5e4b996
commit
5b0faf2286
1 changed files with 17 additions and 92 deletions
109
src/maomao.c
109
src/maomao.c
|
|
@ -106,7 +106,8 @@
|
||||||
wl_signal_add((E), _l); \
|
wl_signal_add((E), _l); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* enums */
|
#define BAKED_POINTS_COUNT 256
|
||||||
|
|
||||||
/* enums */
|
/* enums */
|
||||||
enum { SWIPE_UP, SWIPE_DOWN, SWIPE_LEFT, SWIPE_RIGHT };
|
enum { SWIPE_UP, SWIPE_DOWN, SWIPE_LEFT, SWIPE_RIGHT };
|
||||||
enum { CurNormal, CurPressed, CurMove, CurResize }; /* cursor */
|
enum { CurNormal, CurPressed, CurMove, CurResize }; /* cursor */
|
||||||
|
|
@ -139,6 +140,13 @@ enum {
|
||||||
enum { UP, DOWN, LEFT, RIGHT, UNDIR }; /* movewin */
|
enum { UP, DOWN, LEFT, RIGHT, UNDIR }; /* movewin */
|
||||||
enum { NONE, OPEN, MOVE, CLOSE, TAG };
|
enum { NONE, OPEN, MOVE, CLOSE, TAG };
|
||||||
|
|
||||||
|
struct vec2 {
|
||||||
|
double x, y;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct uvec2 {
|
||||||
|
int x, y;
|
||||||
|
};
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int i;
|
int i;
|
||||||
float f;
|
float f;
|
||||||
|
|
@ -256,7 +264,6 @@ struct Client {
|
||||||
bool need_output_flush;
|
bool need_output_flush;
|
||||||
struct dwl_animation animation;
|
struct dwl_animation animation;
|
||||||
int isterm, noswallow;
|
int isterm, noswallow;
|
||||||
// struct wl_event_source *timer_tick;
|
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
Client *swallowing, *swallowedby;
|
Client *swallowing, *swallowedby;
|
||||||
bool is_clip_to_hide;
|
bool is_clip_to_hide;
|
||||||
|
|
@ -622,13 +629,10 @@ void snap_scene_buffer_apply_size(struct wlr_scene_buffer *buffer, int sx,
|
||||||
void client_set_pending_state(Client *c);
|
void client_set_pending_state(Client *c);
|
||||||
void set_rect_size(struct wlr_scene_rect *rect, int width, int height);
|
void set_rect_size(struct wlr_scene_rect *rect, int width, int height);
|
||||||
|
|
||||||
// int timer_tick_action(void *data);
|
|
||||||
|
|
||||||
#include "dispatch.h"
|
#include "dispatch.h"
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
static const char broken[] = "broken";
|
static const char broken[] = "broken";
|
||||||
// static const char *cursor_image = "left_ptr";
|
|
||||||
static pid_t child_pid = -1;
|
static pid_t child_pid = -1;
|
||||||
static int locked;
|
static int locked;
|
||||||
static uint32_t locked_mods = 0;
|
static uint32_t locked_mods = 0;
|
||||||
|
|
@ -650,10 +654,8 @@ static struct wlr_xdg_decoration_manager_v1 *xdg_decoration_mgr;
|
||||||
static struct wl_list clients; /* tiling order */
|
static struct wl_list clients; /* tiling order */
|
||||||
static struct wl_list fstack; /* focus order */
|
static struct wl_list fstack; /* focus order */
|
||||||
static struct wl_list fadeout_clients;
|
static struct wl_list fadeout_clients;
|
||||||
// static struct wlr_idle *idle;
|
|
||||||
static struct wlr_idle_notifier_v1 *idle_notifier;
|
static struct wlr_idle_notifier_v1 *idle_notifier;
|
||||||
static struct wlr_idle_inhibit_manager_v1 *idle_inhibit_mgr;
|
static struct wlr_idle_inhibit_manager_v1 *idle_inhibit_mgr;
|
||||||
// static struct wlr_input_inhibit_manager *input_inhibit_mgr;
|
|
||||||
static struct wlr_layer_shell_v1 *layer_shell;
|
static struct wlr_layer_shell_v1 *layer_shell;
|
||||||
static struct wlr_output_manager_v1 *output_mgr;
|
static struct wlr_output_manager_v1 *output_mgr;
|
||||||
static struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard_mgr;
|
static struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard_mgr;
|
||||||
|
|
@ -671,8 +673,7 @@ static struct wlr_scene_rect *locked_bg;
|
||||||
static struct wlr_session_lock_v1 *cur_lock;
|
static struct wlr_session_lock_v1 *cur_lock;
|
||||||
static const int layermap[] = {LyrBg, LyrBottom, LyrTop, LyrOverlay};
|
static const int layermap[] = {LyrBg, LyrBottom, LyrTop, LyrOverlay};
|
||||||
static struct wlr_scene_tree *drag_icon;
|
static struct wlr_scene_tree *drag_icon;
|
||||||
static struct wlr_cursor_shape_manager_v1
|
static struct wlr_cursor_shape_manager_v1 *cursor_shape_mgr;
|
||||||
*cursor_shape_mgr; // 这个跟steup obs影响对应
|
|
||||||
static struct wlr_pointer_constraints_v1 *pointer_constraints;
|
static struct wlr_pointer_constraints_v1 *pointer_constraints;
|
||||||
static struct wlr_relative_pointer_manager_v1 *relative_pointer_mgr;
|
static struct wlr_relative_pointer_manager_v1 *relative_pointer_mgr;
|
||||||
static struct wlr_pointer_constraint_v1 *active_constraint;
|
static struct wlr_pointer_constraint_v1 *active_constraint;
|
||||||
|
|
@ -750,7 +751,6 @@ static void sethints(struct wl_listener *listener, void *data);
|
||||||
static void xwaylandready(struct wl_listener *listener, void *data);
|
static void xwaylandready(struct wl_listener *listener, void *data);
|
||||||
static struct wl_listener new_xwayland_surface = {.notify = createnotifyx11};
|
static struct wl_listener new_xwayland_surface = {.notify = createnotifyx11};
|
||||||
static struct wl_listener xwayland_ready = {.notify = xwaylandready};
|
static struct wl_listener xwayland_ready = {.notify = xwaylandready};
|
||||||
void free_config(void);
|
|
||||||
// static struct wl_listener new_xwayland_surface = {.notify = createnotifyx11};
|
// static struct wl_listener new_xwayland_surface = {.notify = createnotifyx11};
|
||||||
// static struct wl_listener xwayland_ready = {.notify = xwaylandready};
|
// static struct wl_listener xwayland_ready = {.notify = xwaylandready};
|
||||||
static struct wlr_xwayland *xwayland;
|
static struct wlr_xwayland *xwayland;
|
||||||
|
|
@ -781,23 +781,14 @@ struct Pertag {
|
||||||
static pid_t *autostart_pids;
|
static pid_t *autostart_pids;
|
||||||
static size_t autostart_len;
|
static size_t autostart_len;
|
||||||
|
|
||||||
#include "parse_config.h"
|
|
||||||
|
|
||||||
struct vec2 {
|
|
||||||
double x, y;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct uvec2 {
|
|
||||||
int x, y;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define BAKED_POINTS_COUNT 256
|
|
||||||
|
|
||||||
struct vec2 *baked_points_move;
|
struct vec2 *baked_points_move;
|
||||||
struct vec2 *baked_points_open;
|
struct vec2 *baked_points_open;
|
||||||
struct vec2 *baked_points_tag;
|
struct vec2 *baked_points_tag;
|
||||||
struct vec2 *baked_points_close;
|
struct vec2 *baked_points_close;
|
||||||
|
|
||||||
|
// update global variables from config file
|
||||||
|
#include "parse_config.h"
|
||||||
|
|
||||||
struct vec2 calculate_animation_curve_at(double t, int type) {
|
struct vec2 calculate_animation_curve_at(double t, int type) {
|
||||||
struct vec2 point;
|
struct vec2 point;
|
||||||
double *animation_curve;
|
double *animation_curve;
|
||||||
|
|
@ -809,6 +800,8 @@ struct vec2 calculate_animation_curve_at(double t, int type) {
|
||||||
animation_curve = animation_curve_tag;
|
animation_curve = animation_curve_tag;
|
||||||
} else if (type == CLOSE) {
|
} else if (type == CLOSE) {
|
||||||
animation_curve = animation_curve_close;
|
animation_curve = animation_curve_close;
|
||||||
|
} else {
|
||||||
|
animation_curve = animation_curve_move;
|
||||||
}
|
}
|
||||||
|
|
||||||
point.x = 3 * t * (1 - t) * (1 - t) * animation_curve[0] +
|
point.x = 3 * t * (1 - t) * (1 - t) * animation_curve[0] +
|
||||||
|
|
@ -858,6 +851,8 @@ double find_animation_curve_at(double t, int type) {
|
||||||
baked_points = baked_points_tag;
|
baked_points = baked_points_tag;
|
||||||
} else if (type == CLOSE) {
|
} else if (type == CLOSE) {
|
||||||
baked_points = baked_points_close;
|
baked_points = baked_points_close;
|
||||||
|
} else {
|
||||||
|
baked_points = baked_points_move;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (up - down != 1) {
|
while (up - down != 1) {
|
||||||
|
|
@ -1219,7 +1214,6 @@ bool client_draw_frame(Client *c) {
|
||||||
client_apply_clip(c);
|
client_apply_clip(c);
|
||||||
c->need_output_flush = false;
|
c->need_output_flush = false;
|
||||||
}
|
}
|
||||||
// c->resize = 1;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4032,8 +4026,6 @@ mapnotify(struct wl_listener *listener, void *data) {
|
||||||
c->scene->node.data = c->scene_surface->node.data = c;
|
c->scene->node.data = c->scene_surface->node.data = c;
|
||||||
|
|
||||||
client_get_geometry(c, &c->geom);
|
client_get_geometry(c, &c->geom);
|
||||||
// c->timer_tick = wl_event_loop_add_timer(wl_display_get_event_loop(dpy),
|
|
||||||
// timer_tick_action, c); wl_event_source_timer_update(c->timer_tick, 0);
|
|
||||||
|
|
||||||
/* Handle unmanaged clients first so we can return prior create borders */
|
/* Handle unmanaged clients first so we can return prior create borders */
|
||||||
if (client_is_unmanaged(c)) {
|
if (client_is_unmanaged(c)) {
|
||||||
|
|
@ -4835,7 +4827,6 @@ void resize(Client *c, struct wlr_box geo, int interact) {
|
||||||
if (!c->mon)
|
if (!c->mon)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// wl_event_source_timer_update(c->timer_tick, 10);
|
|
||||||
c->need_output_flush = true;
|
c->need_output_flush = true;
|
||||||
|
|
||||||
// oldgeom = c->geom;
|
// oldgeom = c->geom;
|
||||||
|
|
@ -5366,71 +5357,6 @@ void handle_foreign_destroy(struct wl_listener *listener, void *data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// void signalhandler(int signalnumber) {
|
|
||||||
// void *array[64];
|
|
||||||
// size_t size;
|
|
||||||
// char **strings;
|
|
||||||
// size_t i;
|
|
||||||
// char filename[1024];
|
|
||||||
|
|
||||||
// // 获取 MAOMAOCONFIG 环境变量
|
|
||||||
// const char *maomaoconfig = getenv("MAOMAOCONFIG");
|
|
||||||
|
|
||||||
// // 如果 MAOMAOCONFIG 环境变量不存在或为空,则使用 HOME 环境变量
|
|
||||||
// if (!maomaoconfig || maomaoconfig[0] == '\0') {
|
|
||||||
// // 获取当前用户家目录
|
|
||||||
// const char *homedir = getenv("HOME");
|
|
||||||
// if (!homedir) {
|
|
||||||
// // 如果获取失败,则无法继续
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// // 构建日志文件路径
|
|
||||||
// snprintf(filename, sizeof(filename), "%s/.config/maomao/crash.log",
|
|
||||||
// homedir);
|
|
||||||
// } else {
|
|
||||||
// // 使用 MAOMAOCONFIG 环境变量作为配置文件夹路径
|
|
||||||
// snprintf(filename, sizeof(filename), "%s/crash.log", maomaoconfig);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 打开日志文件
|
|
||||||
// FILE *fp = fopen(filename, "w");
|
|
||||||
// if (!fp) {
|
|
||||||
// // 如果无法打开日志文件,则不处理
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 获取堆栈跟踪
|
|
||||||
// size = backtrace(array, 64);
|
|
||||||
// strings = backtrace_symbols(array, size);
|
|
||||||
|
|
||||||
// // 写入错误信息和堆栈跟踪到文件
|
|
||||||
// fprintf(fp, "Received signal %d:\n", signalnumber);
|
|
||||||
// for (i = 0; i < size; ++i) {
|
|
||||||
// fprintf(fp, "%zu %s\n", i, strings[i]);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 关闭文件
|
|
||||||
// fclose(fp);
|
|
||||||
|
|
||||||
// // 释放分配的内存
|
|
||||||
// free(strings);
|
|
||||||
|
|
||||||
// // 不调用 exit 以允许生成核心转储文件
|
|
||||||
// }
|
|
||||||
|
|
||||||
// int timer_tick_action(void *data) {
|
|
||||||
// Client *c = (Client *)data;
|
|
||||||
|
|
||||||
// if (c->animation.running) {
|
|
||||||
// wlr_output_schedule_frame(c->mon->wlr_output);
|
|
||||||
// wl_event_source_timer_update(c->timer_tick, 10);
|
|
||||||
// } else {
|
|
||||||
// wl_event_source_timer_update(c->timer_tick, 0);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
|
|
||||||
void setup(void) {
|
void setup(void) {
|
||||||
|
|
||||||
// signal(SIGSEGV, signalhandler);
|
// signal(SIGSEGV, signalhandler);
|
||||||
|
|
@ -6654,7 +6580,6 @@ void unmapnotify(struct wl_listener *listener, void *data) {
|
||||||
c->swallowing = NULL;
|
c->swallowing = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// wl_event_source_remove(c->timer_tick);
|
|
||||||
wlr_scene_node_destroy(&c->scene->node);
|
wlr_scene_node_destroy(&c->scene->node);
|
||||||
printstatus();
|
printstatus();
|
||||||
motionnotify(0, NULL, 0, 0, 0, 0);
|
motionnotify(0, NULL, 0, 0, 0, 0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue