Skip to content

Commit e149140

Browse files
committed
removed msvcrt dependency; simplified initialization
1 parent ccd9664 commit e149140

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
SRCS=virgo.c
33
OBJS=$(SRCS:.c=.o)
44
CFLAGS=-O3 -nostdlib -fno-asynchronous-unwind-tables -fno-builtin -fno-ident -ffunction-sections -fdata-sections -Wall
5-
LIBS=-lgdi32 -lmsvcrt -luser32 -lshell32 -lkernel32
5+
LIBS=-lgdi32 -luser32 -lshell32 -lkernel32
66
LDFLAGS=-static -nostdlib -fno-builtin -s -Wl,-e,__main,--gc-sections,-subsystem,windows $(LIBS)
77
ARCH=32
88
ifeq ($(ARCH), 64)

virgo.c

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
#include <stdlib.h>
2-
#include <string.h>
1+
#define WIN32_LEAN_AND_MEAN
32
#include <windows.h>
3+
#include <shellapi.h>
44

5-
#define sb_free(a) ((a) ? free(stb__sbraw(a)),0 : 0)
5+
#define sb_free(a) ((a) ? HeapFree(GetProcessHeap(), 0, stb__sbraw(a)),0 : 0)
66
#define sb_push(a,v) (stb__sbmaybegrow(a,1), (a)[stb__sbn(a)++] = (v))
77
#define sb_count(a) ((a) ? stb__sbn(a) : 0)
88

@@ -14,6 +14,13 @@
1414
#define stb__sbmaybegrow(a,n) (stb__sbneedgrow(a,(n)) ? stb__sbgrow(a,n) : 0)
1515
#define stb__sbgrow(a,n) ((a) = stb__sbgrowf((a), (n), sizeof(*(a))))
1616

17+
#ifdef __MINGW32__
18+
#ifdef RtlMoveMemory
19+
#undef RtlMoveMemory
20+
extern __stdcall void RtlMoveMemory(void *, void *, size_t);
21+
#endif
22+
#endif
23+
1724
#ifndef MOD_NOREPEAT
1825
#define MOD_NOREPEAT 0x4000
1926
#endif
@@ -45,7 +52,13 @@ static void *stb__sbgrowf(void *arr, int increment, int itemsize)
4552
int dbl_cur = arr ? 2*stb__sbm(arr) : 0;
4653
int min_needed = sb_count(arr) + increment;
4754
int m = dbl_cur > min_needed ? dbl_cur : min_needed;
48-
int *p = realloc(arr ? stb__sbraw(arr) : 0, itemsize * m + sizeof(int)*2);
55+
int *p;
56+
if(arr) {
57+
p = HeapReAlloc(GetProcessHeap(), 0, stb__sbraw(arr),
58+
itemsize*m + sizeof(int)*2);
59+
} else {
60+
p = HeapAlloc(GetProcessHeap(), 0, itemsize*m + sizeof(int)*2);
61+
}
4962
if(p) {
5063
if(!arr) {
5164
p[1] = 0;
@@ -86,14 +99,13 @@ static HICON trayicon_draw(Trayicon *t, char *text, int len)
8699
static void trayicon_init(Trayicon *t)
87100
{
88101
t->dummyHWND = CreateWindowA(
89-
"STATIC", "dummy",
102+
"STATIC", "virgo",
90103
0, 0, 0, 0, 0,
91104
NULL, NULL, NULL, NULL
92105
);
93106
t->hdc = GetDC(t->dummyHWND);
94107
t->bitmapWidth = GetSystemMetrics(SM_CXSMICON);
95108
t->hBitmap = CreateCompatibleBitmap(t->hdc, t->bitmapWidth, t->bitmapWidth);
96-
memset(&t->nid, 0, sizeof(t->nid));
97109
t->nid.cbSize = sizeof(t->nid);
98110
t->nid.hWnd = t->dummyHWND;
99111
t->nid.uID = 100;
@@ -159,7 +171,7 @@ static void windows_del(Windows *wins, HWND hwnd)
159171
}
160172
m = wins->count-i-1;
161173
if(m > 0) {
162-
memcpy(
174+
RtlMoveMemory(
163175
&(wins->windows[i]),
164176
&(wins->windows[i+1]),
165177
sizeof(HWND)*m
@@ -252,11 +264,8 @@ static void virgo_toggle_hotkeys(Virgo *v)
252264
static void virgo_init(Virgo *v)
253265
{
254266
int i;
255-
v->current = 0;
256267
v->handle_hotkeys = 1;
257268
for(i=0; i<NUM_DESKTOPS; i++) {
258-
v->desktops[i].windows = NULL;
259-
v->desktops[i].count = 0;
260269
register_hotkey(i*2, MOD_ALT|MOD_NOREPEAT, i+1+0x30);
261270
register_hotkey(i*2+1, MOD_CONTROL|MOD_NOREPEAT, i+1+0x30);
262271
}
@@ -306,7 +315,7 @@ static void virgo_go_to_desk(Virgo *v, int desk)
306315
void __main(void) asm("__main");
307316
void __main(void)
308317
{
309-
Virgo v;
318+
Virgo v = {0};
310319
MSG msg;
311320
virgo_init(&v);
312321
while(GetMessage(&msg, NULL, 0, 0)) {

0 commit comments

Comments
 (0)