Fixed things
This commit is contained in:
+6
-1
@@ -54,7 +54,7 @@ pub const DecompThread = struct {
|
|||||||
pub fn close(self: *DecompThread) void {
|
pub fn close(self: *DecompThread) void {
|
||||||
if (self.status.raw == 0) return;
|
if (self.status.raw == 0) return;
|
||||||
while (self.status.raw == 2) Futex.wait(&self.status, 2);
|
while (self.status.raw == 2) Futex.wait(&self.status, 2);
|
||||||
&self.status.store(3, .release);
|
self.status.store(3, .release);
|
||||||
Futex.wake(&self.status, 1);
|
Futex.wake(&self.status, 1);
|
||||||
self.thr.join();
|
self.thr.join();
|
||||||
}
|
}
|
||||||
@@ -148,6 +148,9 @@ pub fn init(alloc: std.mem.Allocator, comp_type: CompressionType, block_size: u3
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn deinit(self: DecompMgr) void {
|
pub fn deinit(self: DecompMgr) void {
|
||||||
|
for (self.threads[self.to_start..]) |*t| {
|
||||||
|
t.close();
|
||||||
|
}
|
||||||
self.alloc.free(self.threads);
|
self.alloc.free(self.threads);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,6 +182,8 @@ pub fn decompSlice(self: *DecompMgr, dat: []u8, res: []u8) !usize {
|
|||||||
return thr.submitData(dat, res);
|
return thr.submitData(dat, res);
|
||||||
}
|
}
|
||||||
pub fn decompReader(self: *DecompMgr, rdr: *Reader, res: []u8) !usize {
|
pub fn decompReader(self: *DecompMgr, rdr: *Reader, res: []u8) !usize {
|
||||||
|
std.debug.print("HELLO\n", .{});
|
||||||
|
defer std.debug.print("GOODBYE\n", .{});
|
||||||
self.mut.lock();
|
self.mut.lock();
|
||||||
var thr: *DecompThread = undefined;
|
var thr: *DecompThread = undefined;
|
||||||
var node = self.queue.popFirst();
|
var node = self.queue.popFirst();
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ const StreamError = std.Io.Reader.StreamError;
|
|||||||
const DecompMgr = @import("../decomp.zig");
|
const DecompMgr = @import("../decomp.zig");
|
||||||
|
|
||||||
const BlockHeader = packed struct {
|
const BlockHeader = packed struct {
|
||||||
uncompressed: bool,
|
|
||||||
size: u15,
|
size: u15,
|
||||||
|
uncompressed: bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
const This = @This();
|
const This = @This();
|
||||||
@@ -50,7 +50,8 @@ fn advance(self: *This) !void {
|
|||||||
self.interface.buffer = self.buf[0..hdr.size];
|
self.interface.buffer = self.buf[0..hdr.size];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var limit_rdr = self.rdr.limited(@enumFromInt(hdr.size), &[0]u8{});
|
var tmp_buf: [1024]u8 = undefined;
|
||||||
|
var limit_rdr = self.rdr.limited(@enumFromInt(hdr.size), &tmp_buf);
|
||||||
self.interface.end = try self.decomp.decompReader(&limit_rdr.interface, &self.buf);
|
self.interface.end = try self.decomp.decompReader(&limit_rdr.interface, &self.buf);
|
||||||
self.interface.buffer = self.buf[0..self.interface.end];
|
self.interface.buffer = self.buf[0..self.interface.end];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user