First window rendered, sdl here I come
This commit is contained in:
		
						commit
						834dad44ee
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
.direnv/**
 | 
			
		||||
.zig-cache/**
 | 
			
		||||
							
								
								
									
										145
									
								
								build.zig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								build.zig
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,145 @@
 | 
			
		||||
const std = @import("std");
 | 
			
		||||
 | 
			
		||||
const Build = @import("std").Build;
 | 
			
		||||
 | 
			
		||||
pub fn build(b: *Build) void {
 | 
			
		||||
    const target = b.standardTargetOptions(.{});
 | 
			
		||||
    const optimize = b.standardOptimizeOption(.{});
 | 
			
		||||
 | 
			
		||||
    const exe = b.addExecutable(.{
 | 
			
		||||
        .name = "zsdl",
 | 
			
		||||
        .root_source_file = .{ .src_path = .{ .owner = b, .sub_path = "src/main.zig" } },
 | 
			
		||||
        .target = target,
 | 
			
		||||
        .optimize = optimize,
 | 
			
		||||
    });
 | 
			
		||||
    if (target.query.isNativeOs() and target.result.os.tag == .linux) {
 | 
			
		||||
        // The SDL package doesn't work for Linux yet, so we rely on system
 | 
			
		||||
        // packages for now.
 | 
			
		||||
        exe.linkSystemLibrary("SDL2");
 | 
			
		||||
        exe.linkLibC();
 | 
			
		||||
    } else {
 | 
			
		||||
        const sdl_dep = b.dependency("sdl", .{
 | 
			
		||||
            .optimize = .ReleaseFast,
 | 
			
		||||
            .target = target,
 | 
			
		||||
        });
 | 
			
		||||
        exe.linkLibrary(sdl_dep.artifact("SDL2"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    b.installArtifact(exe);
 | 
			
		||||
 | 
			
		||||
    // Create Check step for zls
 | 
			
		||||
    const exe_check = b.addExecutable(.{
 | 
			
		||||
        .name = "zsdl",
 | 
			
		||||
        .root_source_file = .{ .src_path = .{ .owner = b, .sub_path = "src/main.zig" } },
 | 
			
		||||
        .target = target,
 | 
			
		||||
        .optimize = optimize,
 | 
			
		||||
    });
 | 
			
		||||
    if (target.query.isNativeOs() and target.result.os.tag == .linux) {
 | 
			
		||||
        // The SDL package doesn't work for Linux yet, so we rely on system
 | 
			
		||||
        // packages for now.
 | 
			
		||||
        exe_check.linkSystemLibrary("SDL2");
 | 
			
		||||
        exe_check.linkLibC();
 | 
			
		||||
    } else {
 | 
			
		||||
        const sdl_dep = b.dependency("sdl", .{
 | 
			
		||||
            .optimize = .ReleaseFast,
 | 
			
		||||
            .target = target,
 | 
			
		||||
        });
 | 
			
		||||
        exe_check.linkLibrary(sdl_dep.artifact("SDL2"));
 | 
			
		||||
    }
 | 
			
		||||
    const check = b.step("check", "Check if project compiles, used by Zig Language Server");
 | 
			
		||||
    check.dependOn(&exe_check.step);
 | 
			
		||||
 | 
			
		||||
    const run = b.step("run", "Run the demo");
 | 
			
		||||
    const run_cmd = b.addRunArtifact(exe);
 | 
			
		||||
    run.dependOn(&run_cmd.step);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// // Although this function looks imperative, note that its job is to
 | 
			
		||||
// // declaratively construct a build graph that will be executed by an external
 | 
			
		||||
// // runner.
 | 
			
		||||
// pub fn build(b: *std.Build) void {
 | 
			
		||||
//     // Standard target options allows the person running `zig build` to choose
 | 
			
		||||
//     // what target to build for. Here we do not override the defaults, which
 | 
			
		||||
//     // means any target is allowed, and the default is native. Other options
 | 
			
		||||
//     // for restricting supported target set are available.
 | 
			
		||||
//     const target = b.standardTargetOptions(.{});
 | 
			
		||||
 | 
			
		||||
//     // Standard optimization options allow the person running `zig build` to select
 | 
			
		||||
//     // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not
 | 
			
		||||
//     // set a preferred release mode, allowing the user to decide how to optimize.
 | 
			
		||||
//     const optimize = b.standardOptimizeOption(.{});
 | 
			
		||||
 | 
			
		||||
//     const lib = b.addStaticLibrary(.{
 | 
			
		||||
//         .name = "zsdl",
 | 
			
		||||
//         // In this case the main source file is merely a path, however, in more
 | 
			
		||||
//         // complicated build scripts, this could be a generated file.
 | 
			
		||||
//         .root_source_file = b.path("src/root.zig"),
 | 
			
		||||
//         .target = target,
 | 
			
		||||
//         .optimize = optimize,
 | 
			
		||||
//     });
 | 
			
		||||
 | 
			
		||||
//     // This declares intent for the library to be installed into the standard
 | 
			
		||||
//     // location when the user invokes the "install" step (the default step when
 | 
			
		||||
//     // running `zig build`).
 | 
			
		||||
//     b.installArtifact(lib);
 | 
			
		||||
 | 
			
		||||
//     const exe = b.addExecutable(.{
 | 
			
		||||
//         .name = "zsdl",
 | 
			
		||||
//         .root_source_file = b.path("src/main.zig"),
 | 
			
		||||
//         .target = target,
 | 
			
		||||
//         .optimize = optimize,
 | 
			
		||||
//     });
 | 
			
		||||
 | 
			
		||||
//     // This declares intent for the executable to be installed into the
 | 
			
		||||
//     // standard location when the user invokes the "install" step (the default
 | 
			
		||||
//     // step when running `zig build`).
 | 
			
		||||
//     b.installArtifact(exe);
 | 
			
		||||
 | 
			
		||||
//     // This *creates* a Run step in the build graph, to be executed when another
 | 
			
		||||
//     // step is evaluated that depends on it. The next line below will establish
 | 
			
		||||
//     // such a dependency.
 | 
			
		||||
//     const run_cmd = b.addRunArtifact(exe);
 | 
			
		||||
 | 
			
		||||
//     // By making the run step depend on the install step, it will be run from the
 | 
			
		||||
//     // installation directory rather than directly from within the cache directory.
 | 
			
		||||
//     // This is not necessary, however, if the application depends on other installed
 | 
			
		||||
//     // files, this ensures they will be present and in the expected location.
 | 
			
		||||
//     run_cmd.step.dependOn(b.getInstallStep());
 | 
			
		||||
 | 
			
		||||
//     // This allows the user to pass arguments to the application in the build
 | 
			
		||||
//     // command itself, like this: `zig build run -- arg1 arg2 etc`
 | 
			
		||||
//     if (b.args) |args| {
 | 
			
		||||
//         run_cmd.addArgs(args);
 | 
			
		||||
//     }
 | 
			
		||||
 | 
			
		||||
//     // This creates a build step. It will be visible in the `zig build --help` menu,
 | 
			
		||||
//     // and can be selected like this: `zig build run`
 | 
			
		||||
//     // This will evaluate the `run` step rather than the default, which is "install".
 | 
			
		||||
//     const run_step = b.step("run", "Run the app");
 | 
			
		||||
//     run_step.dependOn(&run_cmd.step);
 | 
			
		||||
 | 
			
		||||
//     // Creates a step for unit testing. This only builds the test executable
 | 
			
		||||
//     // but does not run it.
 | 
			
		||||
//     const lib_unit_tests = b.addTest(.{
 | 
			
		||||
//         .root_source_file = b.path("src/root.zig"),
 | 
			
		||||
//         .target = target,
 | 
			
		||||
//         .optimize = optimize,
 | 
			
		||||
//     });
 | 
			
		||||
 | 
			
		||||
//     const run_lib_unit_tests = b.addRunArtifact(lib_unit_tests);
 | 
			
		||||
 | 
			
		||||
//     const exe_unit_tests = b.addTest(.{
 | 
			
		||||
//         .root_source_file = b.path("src/main.zig"),
 | 
			
		||||
//         .target = target,
 | 
			
		||||
//         .optimize = optimize,
 | 
			
		||||
//     });
 | 
			
		||||
 | 
			
		||||
//     const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests);
 | 
			
		||||
 | 
			
		||||
//     // Similar to creating the run step earlier, this exposes a `test` step to
 | 
			
		||||
//     // the `zig build --help` menu, providing a way for the user to request
 | 
			
		||||
//     // running the unit tests.
 | 
			
		||||
//     const test_step = b.step("test", "Run unit tests");
 | 
			
		||||
//     test_step.dependOn(&run_lib_unit_tests.step);
 | 
			
		||||
//     test_step.dependOn(&run_exe_unit_tests.step);
 | 
			
		||||
// }
 | 
			
		||||
							
								
								
									
										16
									
								
								build.zig.zon
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								build.zig.zon
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
.{
 | 
			
		||||
    .name = "zsdl",
 | 
			
		||||
    .version = "0.0.1",
 | 
			
		||||
    .minimum_zig_version = "0.13.0",
 | 
			
		||||
    .dependencies = .{
 | 
			
		||||
        .SDL = .{
 | 
			
		||||
            .url = "https://github.com/allyourcodebase/SDL/archive/7e4fc30b201d266f197fef4153f7e046bd189a7c.tar.gz",
 | 
			
		||||
            .hash = "1220c57b0bec66a2378e90cd7a79e36f9e7f60c02acca769ab3e6f974d4ef6766418",
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
    .paths = .{
 | 
			
		||||
        "build.zig",
 | 
			
		||||
        "build.zig.zon",
 | 
			
		||||
        "src",
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										92
									
								
								flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "flake-utils": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "systems": "systems"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1731533236,
 | 
			
		||||
        "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1735471104,
 | 
			
		||||
        "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "nixos-unstable",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs_2": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1719942202,
 | 
			
		||||
        "narHash": "sha256-7sP4PzxRsUfRwN8rmFtRvU/nYqTI5YYeIG9P3KJV41g=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "4b015946c99a5bbe9c7a685e66f165aa44644b7d",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-utils": "flake-utils",
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "zlsPkg": "zlsPkg"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "systems": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1681028828,
 | 
			
		||||
        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
			
		||||
        "owner": "nix-systems",
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nix-systems",
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "zlsPkg": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": "nixpkgs_2"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1,
 | 
			
		||||
        "narHash": "sha256-40mzryp9AaDiufsbEISP5VJCEpg0DYrdMjpP16oSJj0=",
 | 
			
		||||
        "path": "./nix/zls",
 | 
			
		||||
        "type": "path"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "path": "./nix/zls",
 | 
			
		||||
        "type": "path"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
{
 | 
			
		||||
  description = "Zig flake with ZLS";
 | 
			
		||||
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 | 
			
		||||
  inputs.flake-utils.url = "github:numtide/flake-utils";
 | 
			
		||||
  inputs.zlsPkg.url = "path:./nix/zls";
 | 
			
		||||
  outputs = {
 | 
			
		||||
    flake-utils,
 | 
			
		||||
    nixpkgs,
 | 
			
		||||
    zlsPkg,
 | 
			
		||||
    ...
 | 
			
		||||
  }:
 | 
			
		||||
  flake-utils.lib.eachDefaultSystem (system: let
 | 
			
		||||
    pkgs = import nixpkgs {
 | 
			
		||||
      inherit system;
 | 
			
		||||
    };
 | 
			
		||||
    zls = zlsPkg.defaultPackage.${system};
 | 
			
		||||
  in {
 | 
			
		||||
    devShell = pkgs.mkShell {
 | 
			
		||||
        buildInputs = with pkgs; [
 | 
			
		||||
          lldb
 | 
			
		||||
          SDL2
 | 
			
		||||
          zig
 | 
			
		||||
          zls
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								nix/zls/flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								nix/zls/flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1719942202,
 | 
			
		||||
        "narHash": "sha256-7sP4PzxRsUfRwN8rmFtRvU/nYqTI5YYeIG9P3KJV41g=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "4b015946c99a5bbe9c7a685e66f165aa44644b7d",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": "nixpkgs"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										33
									
								
								nix/zls/flake.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								nix/zls/flake.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
{
 | 
			
		||||
  description = "Zig language server";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:NixOS/nixpkgs";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = {self, nixpkgs}: {
 | 
			
		||||
    defaultPackage.x86_64-linux =
 | 
			
		||||
      with import nixpkgs { system = "x86_64-linux"; };
 | 
			
		||||
 | 
			
		||||
      stdenv.mkDerivation rec {
 | 
			
		||||
        name = "zls-${version}";
 | 
			
		||||
        version = "0.13.0";
 | 
			
		||||
        src = pkgs.fetchurl {
 | 
			
		||||
          url =  "https://github.com/zigtools/zls/releases/download/${version}/zls-x86_64-linux.tar.xz";
 | 
			
		||||
          sha256 = "sha256-7EwbRcr4jivLnrsWxnBgPMWW5PYhuWGE376DeznNhBA=";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        sourceRoot = ".";
 | 
			
		||||
 | 
			
		||||
        installPhase = ''
 | 
			
		||||
        install -m755 -D zls $out/bin/zls
 | 
			
		||||
        '';
 | 
			
		||||
 | 
			
		||||
        meta = with lib; {
 | 
			
		||||
          homepage = "https://github.com/zigtools/zls/releases";
 | 
			
		||||
          description = "Zig language server";
 | 
			
		||||
          platforms = platforms.linux;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										72
									
								
								src/main.zig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								src/main.zig
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,72 @@
 | 
			
		||||
const c = @cImport({
 | 
			
		||||
    @cInclude("SDL2/SDL.h");
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const std = @import("std");
 | 
			
		||||
const assert = std.debug.assert;
 | 
			
		||||
 | 
			
		||||
pub fn main() !void {
 | 
			
		||||
    if (c.SDL_Init(c.SDL_INIT_VIDEO) != 0) {
 | 
			
		||||
        c.SDL_Log("Unable to initialize SDL: %s", c.SDL_GetError());
 | 
			
		||||
        return error.SDLInitializationFailed;
 | 
			
		||||
    }
 | 
			
		||||
    defer c.SDL_Quit();
 | 
			
		||||
 | 
			
		||||
    const screen = c.SDL_CreateWindow("My Game Window", c.SDL_WINDOWPOS_UNDEFINED, c.SDL_WINDOWPOS_UNDEFINED, 400, 140, c.SDL_WINDOW_OPENGL) orelse
 | 
			
		||||
        {
 | 
			
		||||
        c.SDL_Log("Unable to create window: %s", c.SDL_GetError());
 | 
			
		||||
        return error.SDLInitializationFailed;
 | 
			
		||||
    };
 | 
			
		||||
    defer c.SDL_DestroyWindow(screen);
 | 
			
		||||
 | 
			
		||||
    const renderer = c.SDL_CreateRenderer(screen, -1, 0) orelse {
 | 
			
		||||
        c.SDL_Log("Unable to create renderer: %s", c.SDL_GetError());
 | 
			
		||||
        return error.SDLInitializationFailed;
 | 
			
		||||
    };
 | 
			
		||||
    defer c.SDL_DestroyRenderer(renderer);
 | 
			
		||||
 | 
			
		||||
    const zig_bmp = @embedFile("zig.bmp");
 | 
			
		||||
    const rw = c.SDL_RWFromConstMem(zig_bmp, zig_bmp.len) orelse {
 | 
			
		||||
        c.SDL_Log("Unable to get RWFromConstMem: %s", c.SDL_GetError());
 | 
			
		||||
        return error.SDLInitializationFailed;
 | 
			
		||||
    };
 | 
			
		||||
    defer assert(c.SDL_RWclose(rw) == 0);
 | 
			
		||||
 | 
			
		||||
    const zig_surface = c.SDL_LoadBMP_RW(rw, 0) orelse {
 | 
			
		||||
        c.SDL_Log("Unable to load bmp: %s", c.SDL_GetError());
 | 
			
		||||
        return error.SDLInitializationFailed;
 | 
			
		||||
    };
 | 
			
		||||
    defer c.SDL_FreeSurface(zig_surface);
 | 
			
		||||
 | 
			
		||||
    const zig_texture = c.SDL_CreateTextureFromSurface(renderer, zig_surface) orelse {
 | 
			
		||||
        c.SDL_Log("Unable to create texture from surface: %s", c.SDL_GetError());
 | 
			
		||||
        return error.SDLInitializationFailed;
 | 
			
		||||
    };
 | 
			
		||||
    defer c.SDL_DestroyTexture(zig_texture);
 | 
			
		||||
 | 
			
		||||
    var quit = false;
 | 
			
		||||
    while (!quit) {
 | 
			
		||||
        var event: c.SDL_Event = undefined;
 | 
			
		||||
        while (c.SDL_PollEvent(&event) != 0) {
 | 
			
		||||
            switch (event.type) {
 | 
			
		||||
                c.SDL_QUIT => {
 | 
			
		||||
                    quit = true;
 | 
			
		||||
                },
 | 
			
		||||
                else => {},
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        _ = c.SDL_RenderClear(renderer);
 | 
			
		||||
        _ = c.SDL_RenderCopy(renderer, zig_texture, null, null);
 | 
			
		||||
        c.SDL_RenderPresent(renderer);
 | 
			
		||||
 | 
			
		||||
        c.SDL_Delay(17);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
test "simple test" {
 | 
			
		||||
    var list = std.ArrayList(i32).init(std.testing.allocator);
 | 
			
		||||
    defer list.deinit(); // try commenting this out and see if zig detects the memory leak!
 | 
			
		||||
    try list.append(42);
 | 
			
		||||
    try std.testing.expectEqual(@as(i32, 42), list.pop());
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								src/root.zig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/root.zig
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
const std = @import("std");
 | 
			
		||||
const testing = std.testing;
 | 
			
		||||
 | 
			
		||||
export fn add(a: i32, b: i32) i32 {
 | 
			
		||||
    return a + b;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
test "basic add functionality" {
 | 
			
		||||
    try testing.expect(add(3, 7) == 10);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/zig.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/zig.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 164 KiB  | 
		Loading…
	
		Reference in New Issue
	
	Block a user