1 # DCP-o-matic development notes
3 This file collects a few notes relevant to DCP-o-matic developers. There is also some information
4 [on the web site](https://dcpomatic.com/development).
9 As we have no `film' folder to log to during disk writes, the logs end up:
13 * Disk writer backend: `/var/log/dcpomatic_disk_writer_{out,err}.log`
14 * Disk writer frontend: `/Users/$USER/Library/Preferences/2/com.dcpomatic/2.16/disk.log`
18 * Disk writer backend: `c:\Users\$USER\AppData\Local\dcpomatic\2.16.0\disk_writer.log`
19 * Disk writer frontend: `c:\Users\$USER\AppData\Local\dcpomatic\2.16.0\disk.log`
23 * Disk writer backend: `/home/$USER/.config/dcpomatic/2.16.0/disk_writer.log`
24 * Disk writer frontend: `/home/$USER/.config/dcpomatic/2.16.0/disk.log`
29 The main dcpomatic repo has the following branches:
31 * `main` - the main development branch; contains 2.16.x versions
32 * `v2.17.x` - development branch for v2.17.x versions; periodically rebased onto `main`
34 The `test/data` submodule has the following branches:
36 * `v2.16.x` - branch for use with v2.16.x versions
37 * `v2.18.x` - branch for use with v2.17.x versions (as will become v2.18.x)
40 ## Player stress testing
42 If you configure DCP-o-matic with `--enable-player-stress-test` you can make a script which
43 will run and manipulate the player in predictable ways. The script is a series of commands
44 read line-by-line, and each line can be one of:
48 Open a DCP, for example
50 ```O /home/carl/DCP/MyTestDCP```
54 Start playing the currently-loaded DCP.
56 * `W <time-in-milliseconds>`
58 Wait for approximately the given time before carrying on, for example
62 to wait for 14 seconds.
66 Stop any current playback.
70 Seek to some point in the current DCP, where 0 is the start and 4095 is the end; for example
74 seeks half-way through the DCP.
78 Stops playback and closes the player.
80 The script can be run using something like
82 ```dcpomatic2_player -s stress```
84 to load a script file called `stress` and start executing it.
87 ## Adding a new language
89 - Edit `src/wx/config_dialog.cc` to add the language to languages.
90 - Add to `platform/windows/wscript`, `platform/osx/make_dmg.sh`, `cscript`.
92 - cp build/src/lib/libdcpomatic.pot src/lib/po/$LANG.po
93 - cp build/src/wx/libdcpomatic-wx.pot src/wx/po/$LANG.po
94 - cp build/src/tools/libdcpomatic-wx.pot src/tools/po/$LANG.po
95 - sed -i "s/CHARSET/UTF-8/" src/{lib,wx,tools}/po/$LANG.po
97 - Add credit to `src/wx/about_dialog.cc` and database.
98 - Add to `i18n.php` on website and `update-i18n-stats` script, then run `update-i18n-stats` script.
101 ## Taking screenshots for the manual
103 The manual PDF looks nice if vector screenshots are used. These can be taken as follows:
105 - Build `gtk-vector-screenshot.git` (using meson/ninja)
106 - Copy `libgtk-vector-screenshot.so` to `/usr/local/lib/gtk-3.0/modules/`
107 - Run DCP-o-matic using `run/dcpomatic --screenshot`
108 - Start `take-vector-screenshot`, click "Take screenshot" then click on the DCP-o-matic window.
109 - Find a PDF in `/tmp/dcpomatic2.pdf`
110 - Copy this to `doc/manual/raw-screenshots`