pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

ags: update to ags-

Module Name:	pkgsrc-wip
Committed By:	Yorick Hardy <>
Pushed By:	yhardy
Date:		Tue Dec 31 17:51:11 2019 +0200
Changeset:	68fd23236a55378c40521a0a0bcd231e246e22d8

Modified Files:
Added Files:
Removed Files:

Log Message:
ags: update to ags-

VERSION 3.5.0 - Patch 1, December 2019

 - Fixed changing Audio Clip ID or deleting a clip could break sound links in view frames.
 - Fixed importing an older version project during the same editor session, in which one game was
   already opened, could assign previous game's GameFileName property to the next one.
 - Fixed some fonts may be not drawn on GUI preview after any font with lower ID was modified.
 - Fixed Pause and Stop buttons were enabled when first opening an audio clip preview, and clicking
   these could lead to a crash.
 - Fixed a potential crash during audio clip preview (related to irrKlang .NET library we use).
 - Fixed a potential resource leak in the sprite preview.

 - Fixed IsKeyPressed script function returning values other than 0 or 1 (broke some scripts).
 - Fixed grey-out effect over disabled GUI controls was drawn at the wrong coordinates.

VERSION 3.5.0, December 2019

Common features:
 - Now using Allegro v4.4.3 library (previously v4.4.2).
 - Support for large files: compiled game, sprite set, room files now may exceed 2 GB.
 - Deprecated relative assets resolutions: now sprites, rooms and fonts are considered to
   match game's resolution by default and not resized, unless running in backwards-compatibility
 - Allow room size to be smaller than the game's resolution.
 - Removed fonts count limit.
 - Raised imported sprites count limit to 90000 and removed total sprite count limit
   (this means you may have around 2 billions of dynamic sprites).
 - Removed length limit on the Button and TextBox text (was 50 and 200 respectively).
 - Removed limit on ListBox item count (was 200).

 - Editor requires .NET Framework 4.5 to run. Dropped Windows XP support.
 - Editor preferences are now stored using .NET configuration model, instead of the
   Windows registry.
 - Added support for custom UI color themes.
 - Added "Window" - "Layout" submenu with commands for saving and loading panel layout.
 - Game and room templates are now by default saved in AppData/Local/AGS folder.
   Editor finds them in both program folder and AppData.
 - Allow to change IDs of most of the game items in the project tree by swapping two
   existing items. This is done by calling a context menu and choosing "Change ID".
 - Added "Game file name" option to let users easily set compiled game file's name.
 - Added "Allow relative asset resolutions" option to "Backwards Compatibility" section.
   Disabled by default, it makes game treat all sprites and rooms resolution as real one.
 - Added "Custom Say/Narrate function in dialog scripts" options which determine what
   functions are used when converting character lines in dialog scripts to real script.
   IMPORTANT: this does not currently work with the "Say" checkbox. The workaround is as before:
   duplicate option text as a first spoken line in the dialog script.
 - New revamped sprite import window.
 - Sprites that were created using tiled import can now be properly reimported from source.
 - Added context menu command to open sprite's source file location.
 - Using Magick.NET library as a GIF loader. This should fix faulty GIF imports.
 - New sprite export dialog that lets you configure some export preferences, including
   remapping sprite source paths.
 - Sprites have "Real" resolution type by default. "Low" and "High resolution" are kept
   for backwards compatibility only. When importing older games resolution type will be
   promoted to "Real" whenever it matches the game.
 - New navigation bar in the room editor, which allows to select any room object
   or region for editing, show/hide and lock room objects and regions in any combination.
   These settings are saved in the special roomXXX.crm.user files.
 - Improved how Room zoom slider works, now supports downscale.
 - Added "Export mask to file" tool button to the Room Editor.
 - Added MaskResolution property to Rooms. It ranges from 1:1 to 1:4 and lets you define
   the precision of Hotspot, Regions and Walkable Areas relative to room background.
 - Added "Default room mask resolution" to General Settings, which value will be applied
   to any room opened for editing in this game for the first time.
 - Added "Scale movement speed with room's mask resolution" to General Settings.
 - Removed Locked property from the Room Object, objects are now locked by the navbar.
 - Split GUI's Visibility property into PopupStyle and Visible properties.
 - Added Clickable, Enabled and Visible properties to GUI Controls.
 - "Import over font" command now supports importing WFN fonts too.
 - Removed "Fonts designed for high resolution" option from General Settings. Instead added
   individual SizeMultiplier property to Fonts.
 - Alphabetically sort audio clips in the drop lists.
 - Display audio clip length on the preview pane without starting playback.
 - Sync variable type selector in Global Variables pane with the actual list of supported
   script types.
 - Added ThreadedAudio property to Default Setup.
 - In preferences added an option telling whether to automatically reload scripts changed
 - Added "Always" choice to "Popup message on compile" preference. Successful compilation
   popup will only be displayed if "Always" choice is selected.
 - Added shortcut key combination (Shift + F5) for stopping a game's debug run.
 - Don't display missing games in the "recent games" list.
 - Build autocomplete table a little faster.
 - Disabled sending crash reports and anonymous statistics, because of the AGS server issues.
 - Corrected .NET version query for the anonymous statistics report.
 - Fixed Default Setup was not assigned a proper Title derived of a new game name.
 - Fixed crash and corruption of project data when writing to full disk.
 - Fixed saving sprite file to not cancel completely if only an optional step has failed
   (such as copying a backup file).
 - Fixed changing character's starting room did not update list of characters on property
   pane of a room editor until user switches editing mode or reloads the room.
 - Fixed room editor kept displaying selection box over character after its starting room
   has changed.
 - Fixed room editor not suggesting user to save the room after changing object's sprite
   by double-clicking on it.
 - Fixed sprite folders collapsing after assigning sprite to a View frame or an object.
 - Fixed view loops displayed with offset if the view panel area was scrolled
   horizontally prior to their creation.
 - Fixed MIDI audio preview was resetting all instruments to default (piano) after pausing
   and resuming playback.
 - Fixed MIDI audio preview had wrong control states set when pausing a playback.
 - Fixed autocomplete not showing up correctly if user has multiple monitors.
 - Fixed autocomplete crashing with empty /// comments.
 - Fixed script compiler could leave extra padding inside the compiled scripts filled with
   random garbage if script strings contained escaped sequences like "\n" (this was not good
   for source control).

 - Fixed compiler was not allowing to access regular properties after type's static properties
   in a sequence (for example: DateTime.Now.Hour).

Script API:
 - Introduced new managed struct Point describing (x,y) coordinates.
 - Introduced StringCompareStyle enum and replaced "caseSensitive" argument in String functions
   with argument of StringCompareStyle type.
 - Implemented Dictionary and Set script classes supporting storage and lookup of strings and
   key/value pairs in sorted or unsorted way. Added SortStyle enum for use with them.
 - Implemented Viewport and Camera script classes which control how room is displayed on screen.
 - Implemented Screen struct with a number of static functions and properties, which notably
   features references to the existing Viewports. Deprecated System's ScreenWidth, ScreenHeight,
   ViewportWidth and ViewportHeight in favor of Screen's properties.
 - Added Game.Camera, Game.Cameras and Game.CameraCount properties.
 - All functions that find room objects under screen coordinates are now being clipped by the
   viewport (fail if there's no room viewport at these coordinates). This refers to:
   GetLocationName, GetLocationType, IsInteractionAvailable, Room.ProcessClick, GetWalkableAreaAt
   and all of the GetAtScreenXY functions (and corresponding deprecated functions).
 - Added Character.GetAtRoomXY, Hotspot.GetAtRoomXY, Object.GetAtRoomXY, Region.GetAtScreenXY,
   replaced GetWalkableAreaAt with GetWalkableAreaAtScreen and added GetWalkableAreaAtRoom.
 - Replaced Alignment enum with a new one which has eight values from TopLeft to BottomRight.
 - Renamed old Alignment enum to HorizontalAlignment, intended for parameters that are
   only allowed to be Left, Center or Right.
 - Added new script class TextWindowGUI, which extends GUI class and is meant to access
   text-window specific properties: TextColor and TextPadding.
 - Added new properties to GUI class: AsTextWindow (readonly), BackgroundColor, BorderColor,
   PopupStyle (readonly), PopupYPos.
 - Added Button.TextAlignment and Label.TextAlignment.
 - Added missing properties for ListBox: SelectedBackColor, SelectedTextColor, TextAlignment,
 - Replaced ListBox.HideBorder and HideArrows with ShowBorder and ShowArrows.
 - Added TextBox.ShowBorder.
 - Added AudioClip.ID which corresponds to clip's position in Game.AudioClips array.
 - Added Game.PlayVoiceClip() for playing non-blocking voice.
 - Added SkipCutscene() and eSkipScriptOnly cutscene mode.
 - Allowed to change Mouse.ControlEnabled property value at runtime.
 - Added Game.SimulateKeyPress().
 - Added optional "frame" parameter to Character.Animate and Object.Animate, letting you begin
   animation from any frame in the loop.
 - Deprecated "system" object (not System struct!).
 - Deprecated Character.IgnoreWalkbehinds and Object.IgnoreWalkbehinds.
 - Deprecated DrawingSurface.UseHighResCoordinates. Also, assigning it will be ignored if game's
   "Allow relative asset resolutions" option is disabled.

 - New pathfinder based on the A* jump point search.
 - Implemented new savegame format. Much cleaner than the old one, and easier to
   extend, it should also reduce the size of the save files.
   The engine is still capable of loading older saves, temporarily.
 - Implemented support for sprite batch transformations.
 - Implemented custom room viewport and camera.
 - Removed limits on built-in text wrapping (was 50 lines of 200 chars max each).
 - Removed 200 chars limit for DoOnceOnly token length.
 - Try to create all subdirectories when calling File.Open() for writing,
   DynamicSprite.SaveToFile() and Game.SetSaveGameDirectory().
 - Reimplemented threaded audio, should now work correctly on all platforms.
 - Made debug overlay (console and fps counter) display above any game effects (tint, fade, etc)
 - Made fps display more stable and timing correct when framerate is maxed out for test purposes.
 - Print debug overlay text using Game.NormalFont (was hard-coded to default speech font).
 - Improved performance of hardware-accelerated renderers by not preparing a stage bitmap
   for plugins unless any plugin hooked for the particular drawing events.
 - Reimplemented FRead and FWrite plugin API functions, should now work in 64-bit mode too.
 - Support "--gfxdriver" command line argument that overrides graphics driver in config.
 - Implemented "--tell" set of commands that print certain engine and/or game data to stdout.
 - Use "digiid" and "midiid" config options to be used on all platforms alike and allow these to
   represent driver ID as a plain string and encoded as an integer value (for compatibility).
 - Completely removed old and unsupported record/replay functionality.
 - Replaced number of fatal errors reported for incorrectly called script functions with
   a warning to the warnings.log instead. This is done either when arguments may be fixed
   automatically, or script command simply cannot be executed under current circumstances.
 - Expanded some of the error messages providing more information to end-user and developers.
 - Fixed engine could not locate game data if relative path was passed in command line.
 - Fixed potential bug which could cause DoOnceOnly tokens to be read incorrectly from a savedgame.
 - Fixed engine crashing with "division by zero" error if user set InventoryWindow's ItemWidth or
   ItemHeight to 0.
 - Fixed engine crashing if Object.SetView is called with a view that does not have any loops.
 - Fixed old walk-behind cut-outs could be displayed on first update in a room if the room's
   background was modified using raw drawing commands before fade-in. This happened only when
   running Direct3D or OpenGL renderer. Note that this bug was probably never noticed by players
   for a certain barely related reason.
 - Fixed BlackBox-in transition done by software renderer could have wrong aspect ratio.
 - Fixed Direct3D and OpenGL displayed pink (255, 0, 255) fade as transparent.
 - Fixed Direct3D was slightly distorting game image in pixel perfect mode.
 - Fixed Direct3D was not clearing black borders in fullscreen, which could cause graphical
   artifacts remaining after the Steam overlay, for example.
 - Fixed potential crash that could happen when switching between fullscreen and windowed mode,
   or switching back into game window (only observed on Linux for some reason).
 - Fixed a bug in mp3/ogg decoder where it assumed creating an audiostream succeeded without
   actually testing one.

 - Use same FreeType library sources as Windows version, which suppose to fix TTF font glitches.
 - Re-enabled threaded audio setting.
 - $APPDATADIR$ script paths are now mapped to "$XDG_DATA_HOME/ags-common", making sure it is a
   writeable location.

 - Windows version of AGS is now built with MSVS 2015 and higher.
 - Engine is marked as a DPI-aware application that supposed to prevent window scaling by system.

 - Added "Enable threaded audio" checkbox.

To see a diff of this commit:;a=commitdiff;h=68fd23236a55378c40521a0a0bcd231e246e22d8

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

 ags/Makefile                                       |  5 ++-
 ags/distinfo                                       | 14 +++----
 ags/patches/patch-Common_core_endianness.h         | 19 ----------
 ags/patches/patch-Common_core_platform.h           | 22 +++++++++++
 ags/patches/patch-Engine_Makefile-defs.linux       | 12 +++---
 ags/patches/patch-Engine_libsrc_libcda-0.5_linux.c | 43 +++++++++++++++-------
 6 files changed, 67 insertions(+), 48 deletions(-)

diff --git a/ags/Makefile b/ags/Makefile
index 2629fecae6..c1cea46ef2 100644
--- a/ags/Makefile
+++ b/ags/Makefile
@@ -1,6 +1,6 @@
 # $NetBSD: Makefile,v 1.2 2015/09/14 22:26:14 yhardy Exp $
 MASTER_SITES=	${MASTER_SITE_GITHUB:=adventuregamestudio/}
@@ -29,7 +29,8 @@ do-install:
 .include "../../audio/libvorbis/"
 .include "../../devel/allegro/"
-.include "../../graphics/freetype2/"
+# builds own copy of freetype
+#.include "../../graphics/freetype2/"
 .include "../../multimedia/libogg/"
 .include "../../multimedia/libtheora/"
 .include "../../wip/dumb/"
diff --git a/ags/distinfo b/ags/distinfo
index e4b64930d5..0fbd5cb37a 100644
--- a/ags/distinfo
+++ b/ags/distinfo
@@ -1,9 +1,9 @@
 $NetBSD: distinfo,v 1.2 2015/09/14 22:26:14 yhardy Exp $
-SHA1 (ags- = 02253f218ed3d8d5f69f43e59fceb750848e59fb
-RMD160 (ags- = 1eb24231df2d2ff6594ed53b9db5d4733380cf2e
-SHA512 (ags- = 677db2ca4a697f0e665347965908ca41d3876988b9788cd84c64ca0df7d7e1d81f345ab09297b6d72bf04df22012b271be8791601ebc33d28be222408179f57c
-Size (ags- = 9567527 bytes
-SHA1 (patch-Common_core_endianness.h) = 2c5c1b5d3b80711c1eadec3652f18a4cede9c8eb
-SHA1 (patch-Engine_Makefile-defs.linux) = 17e59df466f4879f8603c4b3c400d008ce228bd3
-SHA1 (patch-Engine_libsrc_libcda-0.5_linux.c) = 6272b02ee98f79a57f8b72167d4aa8bceff34992
+SHA1 (ags- = 540d02e8881430ac394115d84e2ac5a8eb1d758f
+RMD160 (ags- = 7fea8c24cc68aa9238215fcc7892662a6ec716a9
+SHA512 (ags- = 4857402063e008241251271e82f9ad20299ebd614ec8e2b3126b8b3b9de8b5b505cad2fb5eba5ec3543b9d480a1487d5a7dfd354cae43afa07548344098f5b25
+Size (ags- = 10732739 bytes
+SHA1 (patch-Common_core_platform.h) = 393ae8b7e90601cfab0b11ecb185693db6a24ee1
+SHA1 (patch-Engine_Makefile-defs.linux) = a37e4d19021214959387c5a87be927693c71acb5
+SHA1 (patch-Engine_libsrc_libcda-0.5_linux.c) = f4f2bd480b36c1c47aa724b29b620b27a4ad392b
diff --git a/ags/patches/patch-Common_core_endianness.h b/ags/patches/patch-Common_core_endianness.h
deleted file mode 100644
index 5c79517d24..0000000000
--- a/ags/patches/patch-Common_core_endianness.h
+++ /dev/null
@@ -1,19 +0,0 @@
-$NetBSD: patch-Common_core_endianness.h,v 1.1 2015/08/18 18:47:58 yhardy Exp $
-Fix includes for NetBSD.
---- Common/core/endianness.h.orig	2015-07-12 16:14:07.000000000 +0000
-+++ Common/core/endianness.h
-@@ -18,8 +18,12 @@
- #if !defined (WINDOWS_VERSION)
- #if defined (LINUX_VERSION)
-+#ifdef __NetBSD__
-+#include <sys/endian.h>
- #include <endian.h>
- #endif
- // Detect endianess on Linux
- // The logic is inverted on purpose so that it assumes
diff --git a/ags/patches/patch-Common_core_platform.h b/ags/patches/patch-Common_core_platform.h
new file mode 100644
index 0000000000..2fd0859f18
--- /dev/null
+++ b/ags/patches/patch-Common_core_platform.h
@@ -0,0 +1,22 @@
+Use the LINUX definitions for {Free,Net,Open}BSD.
+--- Common/core/platform.h.orig	2019-12-29 17:06:00.000000000 +0000
++++ Common/core/platform.h
+@@ -55,7 +55,7 @@
+     #else
+         #error "Unknown Apple platform"
+     #endif
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+     #define AGS_PLATFORM_OS_WINDOWS (0)
+     #define AGS_PLATFORM_OS_LINUX   (1)
+     #define AGS_PLATFORM_OS_MACOS   (0)
+@@ -102,4 +102,4 @@
+     #define AGS_PLATFORM_DEBUG  (0)
+ #endif
+-#endif // __AC_PLATFORM_H
+\ No newline at end of file
++#endif // __AC_PLATFORM_H
diff --git a/ags/patches/patch-Engine_Makefile-defs.linux b/ags/patches/patch-Engine_Makefile-defs.linux
index 3a623a29af..58f5823297 100644
--- a/ags/patches/patch-Engine_Makefile-defs.linux
+++ b/ags/patches/patch-Engine_Makefile-defs.linux
@@ -2,12 +2,12 @@ $NetBSD$
 Use appropriate options for dlopen.
---- ./Engine/Makefile-defs.linux.orig	2016-06-03 17:47:02.000000000 +0000
-+++ ./Engine/Makefile-defs.linux
-@@ -16,7 +16,11 @@ else
+--- Engine/Makefile-defs.linux.orig	2019-12-29 17:06:00.000000000 +0000
++++ Engine/Makefile-defs.linux
+@@ -33,7 +33,11 @@ else
+   LIBS += $(shell pkg-config --libs vorbis)
  LIBS += $(shell pkg-config --libs vorbisfile)
- LIBS += $(shell pkg-config --libs freetype2)
 -LIBS += -ldl -lpthread -lc -lm -lstdc++
 +LIBS += -lpthread -lc -lm -lstdc++
@@ -15,5 +15,5 @@ Use appropriate options for dlopen.
 +LIBS += $(DL_LIBS)
- ifeq ($(ALLEGRO_MAGIC_DRV), 1)
+ ifneq ($(USE_BUILT_IN_LIBSRC), 1)
diff --git a/ags/patches/patch-Engine_libsrc_libcda-0.5_linux.c b/ags/patches/patch-Engine_libsrc_libcda-0.5_linux.c
index 4716021fee..901c5334e8 100644
--- a/ags/patches/patch-Engine_libsrc_libcda-0.5_linux.c
+++ b/ags/patches/patch-Engine_libsrc_libcda-0.5_linux.c
@@ -2,9 +2,17 @@ $NetBSD: patch-Engine_libsrc_libcda-0.5_linux.c,v 1.1 2015/08/18 18:47:58 yhardy
 Add CD support for NetBSD.
---- Engine/libsrc/libcda-0.5/linux.c.orig	2015-07-12 16:14:07.000000000 +0000
+--- Engine/libsrc/libcda-0.5/linux.c.orig	2019-12-29 17:06:00.000000000 +0000
 +++ Engine/libsrc/libcda-0.5/linux.c
-@@ -8,7 +8,21 @@
+@@ -3,14 +3,28 @@
+  * Peter Wang <>
+  */
+-#ifdef __linux__
++#if defined(__linux__) || defined(__NetBSD__)
+ #include <string.h>
+ #include <stdlib.h>
  #include <unistd.h>
  #include <fcntl.h>
  #include <sys/ioctl.h>
@@ -26,7 +34,7 @@ Add CD support for NetBSD.
  #include <errno.h>
  #include "libcda.h"
-@@ -40,8 +54,13 @@ static void copy_cd_error(void)
+@@ -42,8 +56,13 @@ static void copy_cd_error(void)
  static int get_tocentry(int track, struct cdrom_tocentry *e)
      memset(e, 0, sizeof(struct cdrom_tocentry));
@@ -40,7 +48,7 @@ Add CD support for NetBSD.
      if (ioctl(fd, CDROMREADTOCENTRY, e) < 0) {
-@@ -55,11 +74,24 @@ static int get_tocentry(int track, struc
+@@ -57,11 +76,24 @@ static int get_tocentry(int track, struc
  static int get_subchnl(struct cdrom_subchnl *s)
      memset(s, 0, sizeof(struct cdrom_subchnl));
@@ -65,7 +73,7 @@ Add CD support for NetBSD.
      return 0;
-@@ -101,6 +133,21 @@ void cd_exit()
+@@ -103,6 +135,21 @@ void cd_exit()
  static int play(int t1, int t2)
@@ -87,7 +95,7 @@ Add CD support for NetBSD.
  #ifdef USE_PLAYMSF
      struct cdrom_tocentry e0, e1;
      struct cdrom_msf msf;
-@@ -146,6 +193,7 @@ static int play(int t1, int t2)
+@@ -148,6 +195,7 @@ static int play(int t1, int t2)
      return 0;
@@ -95,7 +103,7 @@ Add CD support for NetBSD.
-@@ -189,8 +237,13 @@ int cd_current_track()
+@@ -191,8 +239,13 @@ int cd_current_track()
      struct cdrom_subchnl s;
@@ -109,7 +117,7 @@ Add CD support for NetBSD.
  	return 0;
-@@ -223,7 +276,11 @@ int cd_is_paused()
+@@ -225,7 +278,11 @@ int cd_is_paused()
      struct cdrom_subchnl s;
@@ -121,7 +129,7 @@ Add CD support for NetBSD.
-@@ -241,6 +298,20 @@ void cd_stop()
+@@ -243,6 +300,20 @@ void cd_stop()
  int cd_get_tracks(int *first, int *last)
@@ -142,7 +150,7 @@ Add CD support for NetBSD.
      struct cdrom_tochdr toc;
      if (ioctl(fd, CDROMREADTOCHDR, &toc) < 0) {
-@@ -253,6 +324,7 @@ int cd_get_tracks(int *first, int *last)
+@@ -255,6 +326,7 @@ int cd_get_tracks(int *first, int *last)
      if (first) *first = toc.cdth_trk0;
      if (last)  *last  = toc.cdth_trk1;
      return 0;
@@ -150,7 +158,7 @@ Add CD support for NetBSD.
-@@ -262,11 +334,21 @@ int cd_get_tracks(int *first, int *last)
+@@ -264,11 +336,21 @@ int cd_get_tracks(int *first, int *last)
  int cd_is_audio(int track)
@@ -172,7 +180,7 @@ Add CD support for NetBSD.
-@@ -275,11 +357,19 @@ int cd_is_audio(int track)
+@@ -277,11 +359,19 @@ int cd_is_audio(int track)
  void cd_get_volume(int *c0, int *c1)
@@ -192,7 +200,7 @@ Add CD support for NetBSD.
-@@ -288,6 +378,15 @@ void cd_get_volume(int *c0, int *c1)
+@@ -290,6 +380,15 @@ void cd_get_volume(int *c0, int *c1)
  void cd_set_volume(int c0, int c1)
@@ -208,7 +216,7 @@ Add CD support for NetBSD.
      struct cdrom_volctrl vol;
      vol.channel0 = MID(0, c0, 255);
-@@ -295,6 +394,7 @@ void cd_set_volume(int c0, int c1)
+@@ -297,6 +396,7 @@ void cd_set_volume(int c0, int c1)
      vol.channel2 = 0;
      vol.channel3 = 0;
      ioctl(fd, CDROMVOLCTRL, &vol);
@@ -216,3 +224,10 @@ Add CD support for NetBSD.
+@@ -317,4 +417,4 @@ void cd_close()
+     ioctl(fd, CDROMCLOSETRAY);
+ }
+-#endif // __linux__
+\ No newline at end of file
++#endif // __linux__

Home | Main Index | Thread Index | Old Index