mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 04:57:26 +01:00
parent
373e61d054
commit
6736bb56ec
1
go.mod
1
go.mod
@ -3,6 +3,7 @@ module github.com/hajimehoshi/ebiten/v2
|
||||
go 1.18
|
||||
|
||||
require (
|
||||
github.com/ebitengine/hideconsole v0.1.0
|
||||
github.com/ebitengine/oto/v3 v3.2.0-alpha.3
|
||||
github.com/ebitengine/purego v0.6.0-alpha.4.0.20240127153756-e7ad88ddfffe
|
||||
github.com/go-text/typesetting v0.1.1-0.20231231232151-8d81c02dc157
|
||||
|
2
go.sum
2
go.sum
@ -1,3 +1,5 @@
|
||||
github.com/ebitengine/hideconsole v0.1.0 h1:pNW5M6xbD+icVaTg+vUl9ZsPTV3BopSTjEWEQitM1WI=
|
||||
github.com/ebitengine/hideconsole v0.1.0/go.mod h1:hTTBTvVYWKBuxPr7peweneWdkUwEuHuB3C1R/ielR1A=
|
||||
github.com/ebitengine/oto/v3 v3.2.0-alpha.3 h1:gDsHiEBKofH9scQ7rf+3jE1XOutgB0KvTkvP74LaRH4=
|
||||
github.com/ebitengine/oto/v3 v3.2.0-alpha.3/go.mod h1:JtMbxJHZBDXfS8BmVYwzWk9Z6r7jsjwsHzOuZrEkfs4=
|
||||
github.com/ebitengine/purego v0.6.0-alpha.4.0.20240127153756-e7ad88ddfffe h1:bac7sG+vDG+mBmjElwI0p1a2L09rxkY8xcmv5QEFyGA=
|
||||
|
@ -1,73 +0,0 @@
|
||||
// Copyright 2017 The Ebiten Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package ui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"golang.org/x/sys/windows"
|
||||
)
|
||||
|
||||
var (
|
||||
kernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
||||
|
||||
procFreeConsoleWindow = kernel32.NewProc("FreeConsole")
|
||||
procGetConsoleWindow = kernel32.NewProc("GetConsoleWindow")
|
||||
)
|
||||
|
||||
func freeConsole() error {
|
||||
r, _, e := procFreeConsoleWindow.Call()
|
||||
if int32(r) == 0 {
|
||||
if e != nil && e != windows.ERROR_SUCCESS {
|
||||
return fmt.Errorf("ui: FreeConsole failed: %w", e)
|
||||
}
|
||||
return fmt.Errorf("ui: FreeConsole returned 0")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func getConsoleWindow() windows.HWND {
|
||||
r, _, _ := procGetConsoleWindow.Call()
|
||||
return windows.HWND(r)
|
||||
}
|
||||
|
||||
// hideConsoleWindow will hide the console window that is showing when
|
||||
// compiling on Windows without specifying the '-ldflags "-Hwindowsgui"' flag.
|
||||
func hideConsoleWindow() {
|
||||
// In Xbox, GetWindowThreadProcessId might not exist.
|
||||
if user32.NewProc("GetWindowThreadProcessId").Find() != nil {
|
||||
return
|
||||
}
|
||||
|
||||
pid := windows.GetCurrentProcessId()
|
||||
|
||||
// Get the process ID of the console's creator.
|
||||
var cpid uint32
|
||||
if _, err := windows.GetWindowThreadProcessId(getConsoleWindow(), &cpid); err != nil {
|
||||
// Even if closing the console fails, this is not harmful.
|
||||
// Ignore error.
|
||||
return
|
||||
}
|
||||
|
||||
if pid == cpid {
|
||||
// The current process created its own console. Hide this.
|
||||
// Ignore error.
|
||||
_ = freeConsole()
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
hideConsoleWindow()
|
||||
}
|
@ -20,6 +20,8 @@ import (
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
_ "github.com/ebitengine/hideconsole"
|
||||
|
||||
"github.com/hajimehoshi/ebiten/v2/internal/atlas"
|
||||
"github.com/hajimehoshi/ebiten/v2/internal/mipmap"
|
||||
"github.com/hajimehoshi/ebiten/v2/internal/thread"
|
||||
|
Loading…
Reference in New Issue
Block a user