34 hours agoMerge branch 'memoryfixes' into 'master' master
Thomas Debesse [Thu, 23 Jan 2020 21:53:18 +0000 (21:53 +0000)]
Merge branch 'memoryfixes' into 'master'

q3map2: fix memory errors and misuses

See merge request xonotic/netradiant!160

34 hours agoq3map2: use safe_malloc0 when safe_malloc is followed by a memset to 0 with the same... 160/head
Thomas Debesse [Thu, 23 Jan 2020 21:27:12 +0000 (22:27 +0100)]
q3map2: use safe_malloc0 when safe_malloc is followed by a memset to 0 with the same size

35 hours agoq3map2: zero the verts array on initialization, verts are tested to not be null in...
Thomas Debesse [Thu, 23 Jan 2020 18:54:31 +0000 (19:54 +0100)]
q3map2: zero the verts array on initialization, verts are tested to not be null in FindMetaVertex()

37 hours agoq3map: magic string, know about the asctime's trailing \n
Thomas Debesse [Tue, 14 Jan 2020 08:01:29 +0000 (09:01 +0100)]
q3map: magic string, know about the asctime's trailing \n

37 hours agoq3map: magic string, no closing parenthesis
Thomas Debesse [Tue, 14 Jan 2020 08:00:14 +0000 (09:00 +0100)]
q3map: magic string, no closing parenthesis

37 hours agotools/quake2: use same strupr other tools use
Thomas Debesse [Tue, 14 Jan 2020 10:01:58 +0000 (11:01 +0100)]
tools/quake2: use same strupr other tools use

37 hours agotools/hd2data: strupr is windows only, define it elsewhere
Thomas Debesse [Tue, 14 Jan 2020 10:00:47 +0000 (11:00 +0100)]
tools/hd2data: strupr is windows only, define it elsewhere

some compiler may ask if strstr would have to be used instead, which is wrong

37 hours agoq3map2/vis: do not read outside of script before detecting end of script
Thomas Debesse [Tue, 14 Jan 2020 09:34:48 +0000 (10:34 +0100)]
q3map2/vis: do not read outside of script before detecting end of script

37 hours agoautoexpand: add an alternative way to autoexpand while zeroing the allocated memory
Thomas Debesse [Tue, 14 Jan 2020 08:42:37 +0000 (09:42 +0100)]
autoexpand: add an alternative way to autoexpand while zeroing the allocated memory

use it to allocate shader lump, without that, garbage from uninitialized memory may be written
after the ending \0 of strings

37 hours agobsp lump write: pad with zeros, not with random unitialized memory data
Thomas Debesse [Tue, 14 Jan 2020 07:06:47 +0000 (08:06 +0100)]
bsp lump write: pad with zeros, not with random unitialized memory data

37 hours agoq3map2/vfs: free temporary allocated dirlist when not used
Thomas Debesse [Tue, 14 Jan 2020 06:28:50 +0000 (07:28 +0100)]
q3map2/vfs: free temporary allocated dirlist when not used

37 hours agoLoadPNGBuffer: use safe_malloc0 to allocate a zeored imate buffer
Thomas Debesse [Tue, 14 Jan 2020 05:52:08 +0000 (06:52 +0100)]
LoadPNGBuffer: use safe_malloc0 to allocate a zeored imate buffer

valgrind reports there may be issues if this is not initialized

4 days agointroduce safe_malloc0, also 0 the memory before usage
Thomas Debesse [Tue, 14 Jan 2020 05:17:15 +0000 (06:17 +0100)]
introduce safe_malloc0, also 0 the memory before usage

note called safe_calloc because calloc does not have the same syntax
and this safe_malloc0 uses malloc syntax

4 days agounnecessary SAFE_MALLOC ifdef: always defined
Thomas Debesse [Tue, 14 Jan 2020 05:12:06 +0000 (06:12 +0100)]
unnecessary SAFE_MALLOC ifdef: always defined

4 days agovalgrind: Conditional jump or move depends on uninitialised value
Thomas Debesse [Tue, 14 Jan 2020 04:47:47 +0000 (05:47 +0100)]
valgrind: Conditional jump or move depends on uninitialised value

4 days agofix a buffer overflow due to a string not being large enough to store ending \0
Thomas Debesse [Tue, 14 Jan 2020 04:39:45 +0000 (05:39 +0100)]
fix a buffer overflow due to a string not being large enough to store ending \0

4 days agoMerge branch 'easy-builder' into 'master'
Thomas Debesse [Mon, 20 Jan 2020 19:52:02 +0000 (19:52 +0000)]
Merge branch 'easy-builder' into 'master'

introduce easy-builder script

See merge request xonotic/netradiant!157

4 days agoupdate readme 157/head
Thomas Debesse [Sat, 16 Nov 2019 15:42:01 +0000 (16:42 +0100)]
update readme

4 days agoadd simple easy-builder script
Thomas Debesse [Tue, 12 Nov 2019 09:34:49 +0000 (10:34 +0100)]
add simple easy-builder script

4 days agofail library-bundler script on error
Thomas Debesse [Tue, 12 Nov 2019 08:24:20 +0000 (09:24 +0100)]
fail library-bundler script on error

4 days agoenable crunch if available
Thomas Debesse [Tue, 12 Nov 2019 07:31:04 +0000 (08:31 +0100)]
enable crunch if available

4 weeks agocrn_rgba: use “algorithm” header to avoid std::min/max being unknown
Thomas Debesse [Wed, 25 Dec 2019 19:22:59 +0000 (20:22 +0100)]
crn_rgba: use “algorithm” header to avoid std::min/max being unknown

avoid this error on some systems (Clang on macOS or FreeBSD):

netradiant/libs/crnrgba/crn_rgba.cpp:93:38: error: no
      member named 'max' in namespace 'std'
    const crn_uint32 blocks_x = std::max(1U, (ti.m_width + 3) >> 2);

4 weeks agoMerge branch 'illwieckz/gcclt7' into 'master'
Thomas Debesse [Wed, 25 Dec 2019 17:41:48 +0000 (17:41 +0000)]
Merge branch 'illwieckz/gcclt7' into 'master'

Fix compiling using GCC older than 7, obsolete !143, fix #122, <3 @zturtleman, bananovenc

Closes #122

See merge request xonotic/netradiant!159

4 weeks agoFix compiling using GCC older than 7, obsolete !143, fix #122, <3 @zturtleman, bananovenc 159/head
Thomas Debesse [Wed, 25 Dec 2019 03:07:10 +0000 (04:07 +0100)]
Fix compiling using GCC older than 7, obsolete !143, fix #122, <3 @zturtleman, bananovenc

7 weeks agoMerge branch 'fixpng' into 'master'
Thomas Debesse [Sat, 7 Dec 2019 04:12:31 +0000 (04:12 +0000)]
Merge branch 'fixpng' into 'master'

radiant: redo 6011367 (!102), fix alpha channel for tRNS cheap transparency PNG

See merge request xonotic/netradiant!158

7 weeks agoradiant: redo 6011367, fix alpha channel for tRNS cheap transparency PNG 158/head
Thomas Debesse [Sat, 7 Dec 2019 03:38:39 +0000 (04:38 +0100)]
radiant: redo 6011367, fix alpha channel for tRNS cheap transparency PNG

3 months agoMerge branch 'packonce' into 'master'
Thomas Debesse [Sun, 13 Oct 2019 02:53:43 +0000 (02:53 +0000)]
Merge branch 'packonce' into 'master'

q3map2/light: add option to only store lightmaps on very last bounce, q3map2/bsp: add fast meta option

See merge request xonotic/netradiant!156

3 months agoq3map2/bsp: introduce -fastmeta option 156/head
Thomas Debesse [Sun, 22 Sep 2019 08:48:48 +0000 (10:48 +0200)]
q3map2/bsp: introduce -fastmeta option

set lightmap and surface verts and indexes values like quake3, known to be fast

equivalent to:
-maxlightmapverts 64 -maxsurfaceverts 999 -maxsurfaceindexes 6000

3 months agoq3map2/bsp: introduce -maxsurfacevertices, rename -mv and -mi
Thomas Debesse [Sun, 22 Sep 2019 08:09:43 +0000 (10:09 +0200)]
q3map2/bsp: introduce -maxsurfacevertices, rename -mv and -mi

- introduce -maxsurfaceverts (was missing as command line option)
- rename -mv to -maxlightmapvertices
- rename -mi to -maxsurfaceindexes

3 months agoq3map2/light: introduce -nobouncestore
Thomas Debesse [Sun, 22 Sep 2019 00:16:08 +0000 (02:16 +0200)]
q3map2/light: introduce -nobouncestore

when storing computed lightmap on each bounce, user can interrupt compilation and
get working files, but it spends allocation time (which is slow and single-threaded

with this option, user can decide to only allocate lightmaps on the very final
bounce, it means it can't be interrupted, but it can save a lot of time

3 months agoq3map2/light: rename -fastallocate to -fastlightmapsearch
Thomas Debesse [Sun, 22 Sep 2019 00:24:08 +0000 (02:24 +0200)]
q3map2/light: rename -fastallocate to -fastlightmapsearch

3 months agoMerge branch 'deprecate-makefile' into 'master'
Thomas Debesse [Sun, 13 Oct 2019 00:57:37 +0000 (00:57 +0000)]
Merge branch 'deprecate-makefile' into 'master'

deprecate the legacy Makefile

See merge request xonotic/netradiant!138

3 months agomakefile: remind future ourselves that conftest.cpp belongs to the legacy Makefile 138/head
Thomas Debesse [Sun, 13 Oct 2019 00:52:52 +0000 (02:52 +0200)]
makefile: remind future ourselves that conftest.cpp belongs to the legacy Makefile

3 months agomakefile: move conftest.cpp back right to legacy Makefile since it's required by it
Thomas Debesse [Sun, 13 Oct 2019 00:50:27 +0000 (02:50 +0200)]
makefile: move conftest.cpp back right to legacy Makefile since it's required by it

3 months agomakefile: deprecate the legacy Makefile
Thomas Debesse [Fri, 5 Jul 2019 01:45:26 +0000 (03:45 +0200)]
makefile: deprecate the legacy Makefile

requires make to be called this way:


3 months agoMerge branch 'restart' into 'master'
Thomas Debesse [Sat, 12 Oct 2019 21:38:40 +0000 (21:38 +0000)]
Merge branch 'restart' into 'master'

do not prompt for game when restarting after switching game, <3 @Garux

See merge request xonotic/netradiant!155

3 months agoimport some improvements from garux tree 155/head
Thomas Debesse [Sat, 12 Oct 2019 21:34:24 +0000 (23:34 +0200)]
import some improvements from garux tree

see https://github.com/Garux/netradiant-custom/commit/1a18246a1fcb08ad15da046382684f7754d6aae1

3 months agofix cancel button
Thomas Debesse [Sat, 12 Oct 2019 21:25:15 +0000 (23:25 +0200)]
fix cancel button

4 months agodo not remember game was switched when selected at startup, <3 @Garux
Thomas Debesse [Sat, 14 Sep 2019 18:47:22 +0000 (20:47 +0200)]
do not remember game was switched when selected at startup, <3 @Garux

4 months agodo not prompt for game when restarting after switching game, <3 @Garux
Thomas Debesse [Thu, 5 Sep 2019 21:23:10 +0000 (23:23 +0200)]
do not prompt for game when restarting after switching game, <3 @Garux

5 months agoMerge branch 'cleanup' into 'master'
Thomas Debesse [Thu, 8 Aug 2019 00:00:43 +0000 (00:00 +0000)]
Merge branch 'cleanup' into 'master'

some cleanup to make the repository cooler

See merge request xonotic/netradiant!146

5 months agoreadme: lots of improvements 146/head
Thomas Debesse [Tue, 23 Jul 2019 05:16:57 +0000 (07:16 +0200)]
readme: lots of improvements

- compatibility matrix
- Ubuntu build requirements
- a lot of rewrites

5 months agocleanup: make appveyor file an hidden dot file
Thomas Debesse [Tue, 23 Jul 2019 04:28:34 +0000 (06:28 +0200)]
cleanup: make appveyor file an hidden dot file

5 months agocleanup: move old stuff to oldstuff/
Thomas Debesse [Tue, 23 Jul 2019 04:28:16 +0000 (06:28 +0200)]
cleanup: move old stuff to oldstuff/

also move in the old COMPILING file that was deleted in 8ac6cfa

We may decide later what to do with them

5 months agoMerge branch 'bundle' into 'master'
Thomas Debesse [Wed, 7 Aug 2019 23:44:45 +0000 (23:44 +0000)]
Merge branch 'bundle' into 'master'

more bundling fixes and improvements, <3 @SpiKe @Calinou

See merge request xonotic/netradiant!154

5 months agobundle: make linux bundle that is known to work on both Ubuntu, Arch and Fedora,... 154/head
Thomas Debesse [Wed, 7 Aug 2019 18:42:10 +0000 (20:42 +0200)]
bundle: make linux bundle that is known to work on both Ubuntu, Arch and Fedora, <3 @SpiKe @Calinou

5 months agobundle: fix some minor mistakes (had no bad consequences)
Thomas Debesse [Wed, 7 Aug 2019 18:46:53 +0000 (20:46 +0200)]
bundle: fix some minor mistakes (had no bad consequences)

produced the same bundle, but with error messages at build time, and some actions uselessly done more than once

5 months agoMerge branch 'bundle' into 'master'
Thomas Debesse [Mon, 5 Aug 2019 18:57:11 +0000 (18:57 +0000)]
Merge branch 'bundle' into 'master'

last-minute bundling fixes, <3 @SpiKe

See merge request xonotic/netradiant!153

5 months agocmake: fix a mistake introduced while revamping bundling code, <3 @SpiKe 153/head
Thomas Debesse [Mon, 5 Aug 2019 18:53:52 +0000 (20:53 +0200)]
cmake: fix a mistake introduced while revamping bundling code, <3 @SpiKe

5 months agobundle: do not bundle libstdc++, pango, and some remaining X11 stuff on Linux
Thomas Debesse [Mon, 5 Aug 2019 18:07:29 +0000 (20:07 +0200)]
bundle: do not bundle libstdc++, pango, and some remaining X11 stuff on Linux

- it's a bad idea to bundle libstdc++ as it may conflict in non-obvious manner
  (like failing on X11 stuff)
- pango is known to conflict with newer distros
- no need to bundle libICE and libSM since we expect user to have a working x11 install

5 months agoMerge branch 'bundle' into 'master'
Thomas Debesse [Mon, 5 Aug 2019 17:02:16 +0000 (17:02 +0000)]
Merge branch 'bundle' into 'master'

factorize the bundling code then implement linux library bundling

See merge request xonotic/netradiant!151

5 months agobundle: do not bundle gtk and other deps on linux 151/head
Thomas Debesse [Mon, 5 Aug 2019 03:02:55 +0000 (05:02 +0200)]
bundle: do not bundle gtk and other deps on linux

- gtk is not easily bundlable on linux because it looks for harcoded system path to optional
  shared libraries like image codecs, theme engines, sound notification system, etc.
  so expect user to install gtk first
- since we ask user to instal gtk, we can also ask them to install gtkglext,
  which is likely to pull gtk itself, x11 and gl dependencies
- old fontconfig does not work correctly if newer fontconfig configuration is installed
- if gtk and fontconfig is installed, freetype is

5 months agobundle: more linux bundling
Thomas Debesse [Mon, 5 Aug 2019 01:27:37 +0000 (03:27 +0200)]
bundle: more linux bundling

5 months agobundle: linux shared lib bundling
Thomas Debesse [Thu, 1 Aug 2019 19:15:08 +0000 (21:15 +0200)]
bundle: linux shared lib bundling

- always rely on up-to-date x11 and gl libraries, bundling them will break on future distros

5 months agobundle: a bunch of improvements
Thomas Debesse [Thu, 1 Aug 2019 19:20:23 +0000 (21:20 +0200)]
bundle: a bunch of improvements

5 months agobundle: chmod +x library-bundler
Thomas Debesse [Thu, 1 Aug 2019 20:30:27 +0000 (22:30 +0200)]
bundle: chmod +x library-bundler

5 months agocmake: BUNDLE_LIBRARIES disables FHS_INSTALL
Thomas Debesse [Thu, 1 Aug 2019 22:28:49 +0000 (00:28 +0200)]

5 months agobikeshedding: spacing
Thomas Debesse [Thu, 1 Aug 2019 19:15:34 +0000 (21:15 +0200)]
bikeshedding: spacing

5 months agoMerge branch 'floating' into 'master'
Thomas Debesse [Sun, 4 Aug 2019 19:38:19 +0000 (19:38 +0000)]
Merge branch 'floating' into 'master'

floating window: use HINT_UTILITY on Windows but normal window everywhere else, <3 @SpiKe, ref !140 !147

See merge request xonotic/netradiant!152

5 months agofloating window: use HINT_UTILITY on Windows but normal window everywhere else, ref... 152/head
Thomas Debesse [Sun, 4 Aug 2019 19:29:24 +0000 (21:29 +0200)]
floating window: use HINT_UTILITY on Windows but normal window everywhere else, ref !140 !147

GDK_WINDOW_TYPE_HINT_UTILITY would have been a good option for any OS but KDE is known to be broken (such window is not put in focus).

We must use GDK_WINDOW_TYPE_HINT_UTILITY on Windows to be sure the window is resizeable and to avoid the infinite minimize-restore loop.

<3 @SpiKe

5 months agoMerge branch 'kingpin' into 'master'
Thomas Debesse [Sat, 27 Jul 2019 20:21:53 +0000 (20:21 +0000)]
Merge branch 'kingpin' into 'master'

add Kingpin gamepack

See merge request xonotic/netradiant!149

5 months agoadd Kingpin gamepack 149/head
Thomas Debesse [Wed, 24 Jul 2019 23:22:07 +0000 (01:22 +0200)]
add Kingpin gamepack

5 months agoMerge branch 'q3map2-cmdline-help' into 'master'
Thomas Debesse [Sat, 27 Jul 2019 20:15:35 +0000 (20:15 +0000)]
Merge branch 'q3map2-cmdline-help' into 'master'

q3map2: add more to q3map2 -help and fix some issues with command-line processing

See merge request xonotic/netradiant!150

6 months agoq3map2: add missing help for q3map2 stage arguments 150/head
Zack Middleton [Wed, 24 Jul 2019 06:24:09 +0000 (01:24 -0500)]
q3map2: add missing help for q3map2 stage arguments

Move -keeplights help from -light stage to -bsp. Add other ~40 arguments
that were missing from help. My main focus was on the -convert stage
but I tried to document the rest as well. Some descriptions are copied
from message when enabling the option.

6 months agoq3map2: fix crash if command-line argument is missing
Zack Middleton [Wed, 24 Jul 2019 06:11:58 +0000 (01:11 -0500)]
q3map2: fix crash if command-line argument is missing

Running `q3map2 -fs_forbiddenpath -v mapname.map` would crash because
-v gets replaced with NULL in main().

Running `q3map2 -threads` would crash because missing next argument
for number of threads.

6 months agoq3map2: fix not displaying default args for some q3map2 stages
Zack Middleton [Tue, 23 Jul 2019 04:50:17 +0000 (23:50 -0500)]
q3map2: fix not displaying default args for some q3map2 stages

Fix not displaying default arguments, and possibly segfaulting, when
running q3map2 -bsp, -analyze, -convert, -exportents, -export, or

6 months agoMerge branch 'radiant-cmdline-null-mapname' into 'master'
Thomas Debesse [Tue, 23 Jul 2019 23:19:47 +0000 (23:19 +0000)]
Merge branch 'radiant-cmdline-null-mapname' into 'master'

radiant: fix command-line error message for non-map filename

See merge request xonotic/netradiant!148

6 months agoradiant: fix command-line error message for non-map filename 148/head
Zack Middleton [Tue, 23 Jul 2019 20:32:47 +0000 (15:32 -0500)]
radiant: fix command-line error message for non-map filename

mapname wasn't set so "(null)" was printed.

Fixes 6ba43753 ("radiant: fix command-line opening on windows").

6 months agoMerge branch 'floating' into 'master'
Thomas Debesse [Tue, 23 Jul 2019 19:57:27 +0000 (19:57 +0000)]
Merge branch 'floating' into 'master'

make floating windows resizable on Windows, ref !140

See merge request xonotic/netradiant!147

6 months agomake floating windows resizable on Windows, ref !140 147/head
Thomas Debesse [Tue, 23 Jul 2019 19:47:14 +0000 (21:47 +0200)]
make floating windows resizable on Windows, ref !140

“hint menu” windows are resizeable on Linux but not on Windows,
that's why it's better to use the “hint utility” type instead.

6 months agoMerge branch 'readme-no-redownload' into 'master'
Thomas Debesse [Tue, 23 Jul 2019 04:13:05 +0000 (04:13 +0000)]
Merge branch 'readme-no-redownload' into 'master'

add how to avoid redownloading gamepacks to README.md

See merge request xonotic/netradiant!145

6 months agoadd how to avoid redownloading gamepacks to README.md 145/head
Zack Middleton [Tue, 23 Jul 2019 03:42:30 +0000 (22:42 -0500)]
add how to avoid redownloading gamepacks to README.md

6 months agoMerge branch 'bintarget' into 'master'
Thomas Debesse [Tue, 23 Jul 2019 03:23:49 +0000 (03:23 +0000)]
Merge branch 'bintarget' into 'master'

add a "binaries" target, fix #135, <3 @zturtleman

Closes #135

See merge request xonotic/netradiant!144

6 months agoadd a "binaries" target, fix #135, <3 @zturtleman 144/head
Thomas Debesse [Tue, 23 Jul 2019 02:21:22 +0000 (04:21 +0200)]
add a "binaries" target, fix #135, <3 @zturtleman

add a "binaries" target to be able to rebuild everything without
redownloading gamepacks

6 months agoMerge branch 'cleanup' into 'master'
Thomas Debesse [Tue, 23 Jul 2019 02:20:57 +0000 (02:20 +0000)]
Merge branch 'cleanup' into 'master'

some clean up

Closes #134

See merge request xonotic/netradiant!142

6 months agorename game_packs target to gamepacks 142/head
Thomas Debesse [Tue, 23 Jul 2019 02:07:14 +0000 (04:07 +0200)]
rename game_packs target to gamepacks

6 months agoradiant target is now named netradiant, fix #134
Thomas Debesse [Tue, 23 Jul 2019 02:06:46 +0000 (04:06 +0200)]
radiant target is now named netradiant, fix #134

also mention the BUNDLE_LIBRARIES cmake option, ref #133

6 months agodelete the COMPILING file as it is heavily outdated
Thomas Debesse [Mon, 22 Jul 2019 02:24:16 +0000 (04:24 +0200)]
delete the COMPILING file as it is heavily outdated

- macos instructions were not edited in 4 years
- linux and windows instructions were not edited in 9 years

and almost everything in this file is now obsolete or wrong

build instructions in README.md file are meant to be up to date

6 months agoMerge branch 'restart' into 'master'
Thomas Debesse [Mon, 22 Jul 2019 02:10:03 +0000 (02:10 +0000)]
Merge branch 'restart' into 'master'

make radiant able to restart itself when required, ask user to

See merge request xonotic/netradiant!141

6 months agobikeshedding: some wording 141/head
Thomas Debesse [Sun, 14 Jul 2019 00:57:54 +0000 (02:57 +0200)]
bikeshedding: some wording

6 months agoradiant: make restart notification a question
Thomas Debesse [Sun, 14 Jul 2019 06:19:51 +0000 (08:19 +0200)]
radiant: make restart notification a question

thanks to latched variable mechanism
people can chose to not restart immediately

6 months agoradiant: restart on game change
Thomas Debesse [Sun, 14 Jul 2019 06:05:00 +0000 (08:05 +0200)]
radiant: restart on game change

ask user to restart radiant on game change

6 months agoradiant: restart on latched preference change
Thomas Debesse [Sun, 14 Jul 2019 15:37:02 +0000 (17:37 +0200)]
radiant: restart on latched preference change

6 months agoradiant: code to make radiant able to restart itself
Thomas Debesse [Sun, 14 Jul 2019 00:53:50 +0000 (02:53 +0200)]
radiant: code to make radiant able to restart itself

- save preferences
- check for map being modified (this asks user for saving if not yet saved)
- check for a map being currently edited
- start a new instance, with the current map as parameter if exists
- quit current instance if new instance started correctly

6 months agoradiant: get own radiant executable file path
Thomas Debesse [Sun, 14 Jul 2019 00:35:17 +0000 (02:35 +0200)]
radiant: get own radiant executable file path

previous code was getting it to compute app_path, lib_path and data_path
but was not keeping the value

6 months agoradiant: fix command-line opening on windows
Thomas Debesse [Sun, 14 Jul 2019 04:06:08 +0000 (06:06 +0200)]
radiant: fix command-line opening on windows

clean-up windows path, especially use '/' instead of '\'
as directory separator since since radiant is hardcoded
to use an lookup for '/' anywhere.

6 months agoMerge branch 'floating' into 'master'
Thomas Debesse [Mon, 22 Jul 2019 02:08:35 +0000 (02:08 +0000)]
Merge branch 'floating' into 'master'

gtk2: do not make floating windows minimizable

See merge request xonotic/netradiant!140

6 months agogtk2: do not make floating windows minimizable 140/head
Thomas Debesse [Sat, 13 Jul 2019 20:56:48 +0000 (22:56 +0200)]
gtk2: do not make floating windows minimizable

First, this feature leads to an horrible behavior on
Windows where the application ends in a loop of endless
minimization and restoration, probably because the window
manager minimizes or restores the whole application once
a floating window in minimized or restored, leading to a
race condition between all floating windows, some being
minimized and others being restored at the same time,
triggering the minimization and the restoration of the
others, and so on. It's difficult to say such issue
will never happen on other OS or with some window manager.

Second, those floating windows are expected to be displayed
or hidden using menu or keyboard shortcut, it's a design
choice. Then the OS-specific way to minimize/restore them
is superflous and less efficient.

Finally, the mainframe is not created as a floating window
so the user minimizes the application by minimizing the

6 months agoMerge branch 'heretic2' into 'master'
Thomas Debesse [Sat, 13 Jul 2019 18:06:23 +0000 (18:06 +0000)]
Merge branch 'heretic2' into 'master'

heretic2: use a dedicated heretic subdirectory for Heretic 2 stuff, and more

See merge request xonotic/netradiant!139

6 months agoreadme: update target related help 139/head
Thomas Debesse [Fri, 5 Jul 2019 22:55:35 +0000 (00:55 +0200)]
readme: update target related help

6 months agotools/heretic2: also make q2map a required target
Thomas Debesse [Sat, 13 Jul 2019 17:56:14 +0000 (19:56 +0200)]
tools/heretic2: also make q2map a required target

6 months agomakefile: install heretic2 stuff like cmake does
Thomas Debesse [Fri, 5 Jul 2019 23:37:23 +0000 (01:37 +0200)]
makefile: install heretic2 stuff like cmake does

6 months agotools/heretic2: print h2data instead of qdata in messages
Thomas Debesse [Fri, 5 Jul 2019 22:44:24 +0000 (00:44 +0200)]
tools/heretic2: print h2data instead of qdata in messages

6 months agotools/heretic2: move heretic2 stuff to its own directory
Thomas Debesse [Fri, 5 Jul 2019 22:33:50 +0000 (00:33 +0200)]
tools/heretic2: move heretic2 stuff to its own directory

6 months agoMerge branch 'winconsole' into 'master'
Thomas Debesse [Fri, 5 Jul 2019 22:07:54 +0000 (22:07 +0000)]
Merge branch 'winconsole' into 'master'

make tools target the console subsystem on Windows

See merge request xonotic/netradiant!137

6 months agocmake: do not use WIN32 for console tools 137/head
Thomas Debesse [Fri, 5 Jul 2019 20:25:34 +0000 (22:25 +0200)]
cmake: do not use WIN32 for console tools

allow them to output stdout on console and spawn a console if required

it's not very intuitive and explicit but the WIN32 cmake keyword
in add_executable call is to not target the console subsystem but
only the graphical one

so console tools just have to not use that keyword, even if they imay
display a window like when doing q2map -glview

then the WIN32 keyword is a kind of “no console” keyword

6 months agocmake: make tools target the console subsystem on Windows
Thomas Debesse [Thu, 4 Jul 2019 23:57:34 +0000 (01:57 +0200)]
cmake: make tools target the console subsystem on Windows

previously on Windows the stdout stuff was only printed on MinTTY console or SSH shell,
this change makes the tools to target the console subsystem so they also print stdout
on cmd console.

this also makes the tool spawning a cmd console windows when not started from a console,
allowing people to monitor what is printed.

this is done by adding a console_app() cmake macro that enables the -mconsole linker flag.
For exhaustivity an extraneous window_app() macro is done too that enables the -mwindows
flag. The -mwindows looks to be implicit, but making this macro explicit and using it
keeps the CMakeLists.txt file self documenting which exe has to be compiled with -mconsole,
which one has to be compiled with -mwindows, and which one has to be compiled with both.

this is a way to check if an exe targets only the windows subsystem:

$ objdump -p netradiant.exe | egrep '^Subsystem'
Subsystem 00000002 (Windows GUI)

this is a way to check if an exe targets the console subsystem:

$ objdump -p q3map2.exe | egrep '^Subsystem'
Subsystem 00000003 (Windows CUI)

note that this one targets both console and windows subsystem, only console is reported:

$ objdump -p q2map.exe | egrep '^Subsystem'
Subsystem 00000003 (Windows CUI)

7 months agoMerge branch 'bundle' into 'master'
Thomas Debesse [Mon, 24 Jun 2019 19:02:41 +0000 (19:02 +0000)]
Merge branch 'bundle' into 'master'

improve lib and other stuff bundling on windows

See merge request xonotic/netradiant!136

7 months agobundle: store dll in lib subdirectory, bundle all of them at once 136/head
Thomas Debesse [Wed, 19 Jun 2019 18:45:53 +0000 (20:45 +0200)]
bundle: store dll in lib subdirectory, bundle all of them at once

instead of finding and copying the dll each time a binary is produced,
the path of the produced binary is stored in a unique file (to avoid race
condition) and the target for that binary is added as a dependency to a new
target named `bundle` that does the finding and the copying once for all.

this avoids race condition while building targets in parallel, workaround
the inability of cmake to track a common list between all targets and to keep
it from configure to build step

this makes the bundle process more reliable and avoid things being copied
twice. Before that I've seen copy processes starting to copy the same file
even with the -n option telling to not copy if the file exists, then seeing
one of them failing because they both started when the file was not yet
copied but one finished the copy before the other one

this also makes the bundling faster by only doing things once for all

the dll are then moved to a lib/ subdirectory instead of the root
of the buld directory

each binary having dll to find and copy is built with a special resource file
embedding a manifest telling there is an assembly directory containing dll
named lib, then a manifest is writen for that assembly directory listing all
the dll it can find there telling windows to look for them there at binary
loading instead of the system directory and the place right to binary


- helps to ensure the right dll is loaded even if another exists
  with the same name on the system
- reduce the mess by storing all dll in one dedicated directory
- avoids the double cmake configure run by removing the need to
  glob the build directory before installation

7 months agobundle: also bundle hicolor icons with libgtk
Thomas Debesse [Tue, 18 Jun 2019 21:06:14 +0000 (23:06 +0200)]
bundle: also bundle hicolor icons with libgtk