summaryrefslogtreecommitdiffstats
path: root/osdep/priority.c
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-02-10 15:34:44 +0000
committerdiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-02-10 15:34:44 +0000
commitcdfafa69996bce40732997dca168b9f36794dbe8 (patch)
tree5244396fad3f3c8b89886d4403a7701a80f87ca4 /osdep/priority.c
parent97e427039d8123eed37990eaaf13b403daaae2da (diff)
downloadmpv-cdfafa69996bce40732997dca168b9f36794dbe8.tar.bz2
mpv-cdfafa69996bce40732997dca168b9f36794dbe8.tar.xz
Add priority support for OS/2 and factorize the Windows priority support.
patch by KO Myung-Hun, komh chollian net git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28520 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'osdep/priority.c')
-rw-r--r--osdep/priority.c92
1 files changed, 92 insertions, 0 deletions
diff --git a/osdep/priority.c b/osdep/priority.c
new file mode 100644
index 0000000000..8ef7c34c76
--- /dev/null
+++ b/osdep/priority.c
@@ -0,0 +1,92 @@
+/*
+ * implementation of '-priority' for OS/2 and Win32
+ *
+ * Copyright (c) 2009 by KO Myung-Hun (komh@chollian.net)
+ *
+ * This file is part of MPlayer.
+ *
+ * MPlayer is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * MPlayer is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with MPlayer; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifdef __OS2__
+
+#define INCL_DOS
+#include <os2.h>
+
+#define REALTIME_PRIORITY_CLASS MAKESHORT(0, PRTYC_TIMECRITICAL)
+#define HIGH_PRIORITY_CLASS MAKESHORT(PRTYD_MAXIMUM, PRTYC_REGULAR)
+#define ABOVE_NORMAL_PRIORITY_CLASS MAKESHORT(PRTYD_MAXIMUM / 2, PRTYC_REGULAR)
+#define NORMAL_PRIORITY_CLASS MAKESHORT(0, PRTYC_REGULAR)
+#define BELOW_NORMAL_PRIORITY_CLASS MAKESHORT(PRTYD_MAXIMUM, PRTYC_IDLETIME)
+#define IDLE_PRIORITY_CLASS MAKESHORT(0, PRTYC_IDLETIME)
+
+#else
+
+/* Disable non-underscored versions of non-ANSI functions
+ * as otherwise int eof would conflict with eof(). */
+#define _UWIN 1
+#include <windows.h>
+
+#endif /* __OS2__ */
+
+#include <string.h>
+
+#include "mp_msg.h"
+#include "help_mp.h"
+
+#include "priority.h"
+
+char *proc_priority = NULL;
+
+void set_priority(void)
+{
+ struct {
+ char* name;
+ int prio;
+ } priority_presets_defs[] = {
+ { "realtime", REALTIME_PRIORITY_CLASS},
+ { "high", HIGH_PRIORITY_CLASS},
+#ifdef ABOVE_NORMAL_PRIORITY_CLASS
+ { "abovenormal", ABOVE_NORMAL_PRIORITY_CLASS},
+#endif
+ { "normal", NORMAL_PRIORITY_CLASS},
+#ifdef BELOW_NORMAL_PRIORITY_CLASS
+ { "belownormal", BELOW_NORMAL_PRIORITY_CLASS},
+#endif
+ { "idle", IDLE_PRIORITY_CLASS},
+ { NULL, NORMAL_PRIORITY_CLASS} /* default */
+ };
+
+ if (proc_priority) {
+ int i;
+
+ for (i = 0; priority_presets_defs[i].name; i++) {
+ if (strcasecmp(priority_presets_defs[i].name, proc_priority) == 0)
+ break;
+ }
+ mp_msg(MSGT_CPLAYER, MSGL_STATUS, MSGTR_SettingProcessPriority,
+ priority_presets_defs[i].name);
+
+#ifdef __OS2__
+ DosSetPriority(PRTYS_PROCESS,
+ HIBYTE(priority_presets_defs[i].prio),
+ LOBYTE(priority_presets_defs[i].prio),
+ 0);
+#else
+ SetPriorityClass(GetCurrentProcess(), priority_presets_defs[i].prio);
+#endif
+ }
+}
+